我使用Opencart并启用了SEO友情链接。
这使得.htaccess文件看起来像这样
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
但我需要添加一个不会被重写的文件夹异常,特别是/ emailer
在网络上回答我做了以下事情:
RewriteCond %{REQUEST_URI} !^/(emailer|js|css)/ [NC]
RewriteRule ^ - [L]
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
这使得/电子邮件/工作,但其他重写没有。有谁知道我在这里做错了什么?
答案 0 :(得分:0)
您只需将其插入主 RewriteRule 。
之前RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^\/(emailer|js|css) [NC]
RewriteCond %{REQUEST_URI} !\.(ico|gif|jpg|jpeg|png|js|css)$ [NC]
RewriteRule ^([^?]*) index.php?_route_=$1&request_uri=%{REQUEST_URI} [L,QSA]
注意:它没有经过测试,但这可以让您了解如何操作。
稍后编辑:
我已经测试了我的代码,但它没有用。我已经对它进行了编辑,现在可以正常工作,如下所示:
RewriteCond %{REQUEST_FILENAME} !-f
=>如果请求不是真实的文件名RewriteCond %{REQUEST_FILENAME} !-d
=>如果请求不是真实的目录RewriteCond %{REQUEST_URI} !^\/(emailer|js|css) [NC]
=>如果根目录中没有以单词emailer / js / css RewriteCond %{REQUEST_URI} !\.(ico|gif|jpg|jpeg|png|js|css)$ [NC]
=>如果请求没有以下列ico / gif / jpg / jpeg / png / js / css的扩展名结尾注意:
测试你是否需要在重写规则中使用正斜杠,在我的修改示例中添加一个查询变量,并在索引中打印它(在php open标记后的第一行)。 php文件是这样的:
的print_r($ _ GET [ 'REQUEST_URI']); 出口;
完成测试后,从htacces和index.php中删除request_uri。