我在WordPress中有这个.htaccess文件。它位于/ public_html /(web root)。我需要从重写引擎中排除一个文件夹(csNewsAd)。我已经尝试过这个,基于SO在此类似的另一个问题,但根本没有用。
AddHandler x-httpd-php5 .php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/csNewsAd($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
有什么建议?
内部/ csNewsAd中有另一个.htaccess用于密码保护:
AuthName "Clasificados"
AuthType "basic"
AuthUserFile /home/ig000192/public_html/csNewsAd/.passwd
Require valid-user
RewriteCond %{REQUEST_URI} !^/(csNewsAd|csNewsAd/.*)$
代替
RewriteRule ^/csNewsAd($|/) - [L]
你可以添加这样的东西:
RewriteCond %{REQUEST_URI} !^/csNewsAd
但这不应该是必需的,因为如果csNewsAd确实是一个目录(文件夹),它不应该首先被重写,因为
RewriteCond %{REQUEST_FILENAME} !-d
你确定你和那个文件夹,权利或(确实)另一个.htaccess之间没有其他东西吗?
你应该尝试这个
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/(gadget)/(.*) /gadget/$2 [R]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我很确定你已经排除了这一点,但是因为我来到这里同样的问题我想和你分享:在我的情况下问题实际上是在权限上 - 显然,无法访问该文件夹,排除被忽略。
值得注意的是,在这条线路的.htaccess流程中,它很重要。
看到这里:http://tanyanam.com/technology/wordpress-exclude-directory-from-url-rewrite-with-htaccess - 线路需要在WordPress之前出现,它不会在它们之后工作。
抢
我知道这是一个老帖子,但它仍然帮助了我。我有几个RewriteRules块的额外问题:
##
## White listed folders
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !/.well-known/*
RewriteCond %{REQUEST_FILENAME} !/storage/app/uploads/.*
RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.*
...
RewriteCond %{REQUEST_FILENAME} !/modules/.*/(assets|resources)/.*
RewriteRule !^index.php index.php [L,NC]
##
## Block all PHP files, except index
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule !^index.php index.php [L,NC]
##
## Standard routes
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
并且必须在每个块之前添加我的RewriteCond ...
我的两个地方遇到了类似的问题。我在这里读到的评论对我不起作用,但我终于得到了这个代码:
<IfModule mod_rewrite.c>
RewriteEngine on
# stuff to let through (ignore)
RewriteCond %{REQUEST_URI} "/folder1/"
RewriteRule (.*) $1 [L]
将下面的行放在根目录中的.htaccess文件中。
ErrorDocument 401 default
有完全相同的问题,这对我有用。这不是重定向不起作用的问题。问题是401(需要授权)错误是nog定义的,因此“popup”没有显示。
有同样的问题,并在这里找到我的问题的答案:http://kb.siteground.com/article/How_to_exclude_a_folder_from_Wordpress_permalinks.html
- 从网站上
要从WordPress重写规则中排除子文件夹,您需要编辑.htaccess文件并更改下面的粗体行:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L] # Original line
RewriteRule ./ /index.php [L] # New line
</IfModule>
# END WordPress
.htaccess影响下面的所有目录,所以如果你在csNewsAd中放入.htaccess并带有你想要的重写指令,它将优先于根文件。
如果您在.htaccess文件中使用mod_rewrite,则只需在模式中指定不带本地路径前缀的URL路径。在没有领先的/
的情况下(因为你在文件根/
):
RewriteRule ^csNewsAd($|/) - [L]
我第一次开始使用Rails。在导轨的顶部.htaccess是以下两行。
# RewriteCond %{REQUEST_URI} ^/notrails.*
# RewriteRule .* – [L]
当我终于效仿他们的榜样时,它起作用。
我想排除图像,javascripts,样式表,css,图像全局,js-global(等),所以我将上面改为。
RewriteCond %{REQUEST_URI} ^(images|javascripts|stylesheets|css|images-globa|js-global|js).*
RewriteRule .* – [L]
它按照我需要的方式工作。
我们不会谈论我有多少不同的javascript,样式表和图像文件夹....
但这确实使我的“错误”文件不那么痛苦。如果有人添加了不存在的图像文件,我的调度不必处理它。
这是关于GoDaddy WordPress网站的解决方案。我的安装有一个web.config文件,所以我添加了一个重写规则。我想要一个/ ApiData路径,我可以为AJAX调用运行MVC.net应用程序(虚拟目录)。
<system.webServer>
<!-- ... -->
<rewrite>
<rules>
<rule name="apidata" stopProcessing="true">
<match url="apidata"/>
</rule>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule>
</rules>
</rewrite>
</system.webServer>
这是#1 google结果和错误的答案。
正确的答案是在Wordpress指令之前添加它。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
RewriteRule ^.*$ - [L]
</IfModule>
我有GoDaddy主持,这个问题杀了我。我在public_html中使用受密码保护的子目录中的冲突.htaccess选项一遍又一遍地遇到同样的问题。
我最终购买了另一个帐户,因为我尝试了对我的.htaccess文件进行了大约一百万次不同的修改,并没有解决这个问题。我现在正在分享我的设置和解决方案,只是为了完整性和清晰度。 (只是你知道,无论如何,这个帐户都是值得的,所以没什么大不了的。)
如果它看起来像是其他答案的组合,那是因为它是。所有这一切都奏效了。
目录结构:
-otherfiles
---public_html
---.htaccess
-----subfolder
---.htaccess
子文件夹.htaccess具有密码保护功能,因此类似于:
AuthType Basic
AuthName "Attendance"
AuthUserFile "/home/user/.htpasswds/public_html/attendance/passwd"
require valid-user
public_html .htaccess最初有这个,它没有工作(因为它吞噬了一切并重定向它,所以FatFreeFramework或CodeIgniter正在处理它):
RewriteEngine On
RewriteCond $1 !^(index.php|resources|subfolder|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
为了解决这个问题,我在public_html .htaccess文件中添加了两行代码。所以你不会猜测在哪里,我会再次显示整个文件:
RewriteEngine On
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(subfolder|subfolder/.*)$
ErrorDocument 401 default
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]