.htaccess重写规则不适用于特定页面
我有一条重写规则,快把我逼疯了。规则是:.htaccess重写规则不适用于特定页面,.htaccess,pattern-matching,rewrite,.htaccess,Pattern Matching,Rewrite,我有一条重写规则,快把我逼疯了。规则是: RewriteCond %{QUERY_STRING} c=8 RewriteRule ^catalogue/index\.php$ http://www.domain.co.uk/accessories/? [NC,L,R=301] 这将不适用于: http://www.domain.co.uk/catalogue/index.php?c=8 但这将起作用: RewriteCond %{QUERY_STRING} c=8 RewriteRule ^
RewriteCond %{QUERY_STRING} c=8
RewriteRule ^catalogue/index\.php$ http://www.domain.co.uk/accessories/? [NC,L,R=301]
这将不适用于:
http://www.domain.co.uk/catalogue/index.php?c=8
但这将起作用:
RewriteCond %{QUERY_STRING} c=8
RewriteRule ^(.*)$ http://www.domain.co.uk/accessories/? [NC,L,R=301]
但是,我不能使用此脚本,因为我需要指定catalog/index.php,以免重写其他页面。请帮助:(
以下是我之前的几行代码:
Options +FollowSymlinks
# Prevent Directoy listing
Options -Indexes
# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
Order deny,allow
Deny from all
</FilesMatch>
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
RewriteRule sitemap.xml /index.php?route=feed/google_sitemap
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
Options+FollowSymlinks
#防止Directoy上市
选项-索引
#阻止直接访问文件
命令拒绝,允许
全盘否定
#搜索引擎优化URL设置
重新启动发动机
#如果您的opencart安装没有在主web文件夹上运行,请确保您的文件夹在ie中运行。/been/shop/
重写基/
重写规则sitemap.xml/index.php?route=feed/google\u sitemap
重写cond%{REQUEST_FILENAME}!-f
重写cond%{REQUEST_FILENAME}!-d
RewriteRule^([^?]*)index.php?_route_uu=$1[L,QSA]
###某些服务器可能需要启用的其他设置
###通过删除前面的#符号来取消对命令的注释。
###如果在启用以下任何设置后出现“内部服务器错误500”,请恢复#,因为这意味着您的主机不允许这样做。
#1.如果您的购物车一次只允许您添加一个项目,则可以启用register_globals。这可能会禁用它:
#php_标志寄存器_全局关闭
#2.如果您的购物车启用了魔法报价,则可以通过此操作将其禁用:
#php_标志魔术_引号_gpc关闭
#3.设置最大上载文件大小。大多数主机将限制此大小,不允许覆盖它,但您可以尝试
#php_值上传_最大_文件大小999M
#4.设置最大post大小。如果您有很多产品选项或表单未保存所有字段时出现错误,请取消对此行的注释
#php_值post_最大尺寸999M
#5.设置脚本可以花费的最长时间。如果您有很多产品选项,或者表单未保存所有字段时出现错误,请取消对此行的注释
#php_值最大执行时间200
#6.设置接收输入的最长时间。如果您有很多产品选项或表单未保存所有字段时出现错误,请取消对此行的注释
让人们知道解决方案是什么
这些规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
当请求/catalog/index.php?c=8
,并且URI被重写到路由器:/index.php?\u route\=/catalog/index.php
时,正在应用。这使得目录规则无法应用。您需要将它们移到路由规则之上:
RewriteCond %{QUERY_STRING} c=8
RewriteRule ^catalogue/index\.php$ http://www.domain.co.uk/accessories/? [NC,L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
因此,重定向可以在它被抛出路由器之前发生。该.htaccess位于根目录中,它是一个opencart站点,我正在编辑默认文件。在这之前有规则吗?有一些规则我看不出来是冲突的,但我将更新我的帖子。我看到的唯一一件事是它是可能的
/catalog/index.php
被重写为/index.php?\u route\uu=cataloge/index.php
如果catalog
目录不存在。我想你是对的。你知道我如何编码吗?