在.htaccess中重写排除网址

时间:2012-12-28 07:36:12

标签: wordpress apache .htaccess

我有这些工作重写规则:

# Allow access to assets folder from plugins folders
RewriteRule ^app/plugins/(.+)/assets - [L]

# forbid access to files and folders under app
RewriteRule ^app/.*$ - [L,F]

# rewrite to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]

现在我想从这些规则中排除位于http://www.mywebsite.com/wordpress/下的所有内容...... 因此我添加了一个新的重写条件:

...
# rewrite to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^\/wordpress\/ [NC]
RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]

但它不起作用。当我尝试访问这样的东西时: http://www.mywebsite.com/wordpress/contact-us/

它将我重定向到index.php ...

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

好的,我终于找到了所有这些出了什么问题: 实际上我没注意到我的/ wordpress目录中存在.htaccess文件。 因此,在我的根目录的.htaccess中,我已将此规则添加到所有其他目录之上:

RewriteRule ^wordpress - [L]

然后在wordpress目录的.htaccess中我有这些规则:

RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

我不知道是否所有内容都已经过优化但是有效!

答案 1 :(得分:0)

试试这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/wordpress/ [NC]
RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]