Htaccess规则不适用于禁止我的网站区域

时间:2014-01-23 12:24:11

标签: .htaccess mod-rewrite

所以我已经在这个网站上苦苦挣扎了好几天了。我正在尝试从SEO角度优化网站,因此我们需要在网站上重写几个URL,因为它们在URL中用“/?breadcrumb”进行了硬编码。

我们需要301重写规则来重写包含“?”的网站上的所有内容。在最后一个正斜杠的URL中。这工作正常,直到我们发现它影响了CSS和JavaScript文件。然后,我们添加了一条新规则,以防止将此规则应用于CSS和JavaScript文件。一切都工作正常,直到我们发现商店搜索不起作用,产品不会加载到管理员后端。

以下是我们目前的规则:

RewriteCond %{REQUEST_URI} .(css|js)$ [NC]
RewriteRule ^.*$ - [NC,L]


RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?[^/])$ /$1/ [R=301,L]

RewriteRule ^product/([^/]+)/?$ /$1/ [R=301,L]

我们正在努力,因为我们需要重写包含“?”的任何网址在最后一个正斜杠的URL中,我们需要阻止此规则应用于“/ store / search / ”和“/ administratorlogin / ”。我还想补充一点,“/ administratorlogin / *”在https上,如果这有所不同。

我已经在线阅读并尝试过RewriteCond%{REQUEST_URI}!^ / store / search /?$但是这样做不行。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

试试这条规则:

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST [OR]
RewriteCond %{REQUEST_URI} /(store/search|administratorlogin) [NC,OR]
RewriteCond %{REQUEST_URI} \.(css|js)$ [NC]
RewriteRule ^ - [L]

RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1/? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?[^/])$ /$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^product/([^/]+)/?$ /$1/ [R=301,L]