.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
目录不存在。我想你是对的。你知道我如何编码吗?