如何为一个子类别禁用 RewriteRule?
Posted
技术标签:
【中文标题】如何为一个子类别禁用 RewriteRule?【英文标题】:How can I disable RewriteRule for one subcategory? 【发布时间】:2010-12-04 01:34:10 【问题描述】:我的网站根目录中有一个 .htaccess,如下所示:
RewriteEngine On
RewriteCond %HTTP_HOST !^www\.mydomain\.pl [NC]
RewriteCond %HTTP_HOST ^(?:www\.)?([a-z0-9_-]+)\.mydomain\.pl [NC]
RewriteRule ^/?$ /index.php?run=places/%1 [L,QSA]
RewriteCond %REQUEST_URI !^/index.php$
RewriteCond %REQUEST_URI !^/images/
RewriteCond %REQUEST_URI !^/upload/
RewriteCond %REQUEST_URI !^/javascript/
RewriteRule ^(.*)$ /index.php?runit=$1 [L,QSA]
但是当我输入时:
mydomain.pl/guests
我想正常访问实际文件夹来宾。我知道我需要以某种方式为来宾子文件夹禁用此规则,但我该怎么做呢?
编辑:
我已经包含了整个 .htaccess 文件
【问题讨论】:
+1 这是一个完全正确的问题。 【参考方案1】:我已经在子文件夹中放置了一个 htaccess 并添加了 RewriteEngine Off 并且它可以工作。
【讨论】:
如果重写发生在上面的文件夹中,这将不起作用。 不是很好的解决方案。如果子文件夹包含一个本身使用 .htaccess 并在每次更新时覆盖它的外部应用程序,则必须每次都对其进行修改。 有一个没有RewriteCond的解决方案:***.com/a/1848579/1854856【参考方案2】:添加其中之一
RewriteEngine On
#If the request starts with guests, then pass it through
RewriteCond %REQUEST_URI ^guests
RewriteRule ^ - [L,QSA]
#Or, if the request contains an existing filename or directory, pass it through
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ - [L,QSA]
【讨论】:
取决于规则放置在哪里。是 htaccess 还是主配置文件?另外,这些都是你的规则吗? @Vinko - 谢谢你的回答我已经包含了我的整个 htaccess 文件。如何更改它以使其正常工作? 当我输入 mydomain.pl/guests 时,我被重定向到 mydomain.pl/guests/?runit=guests 并且我想正常访问 mydomain.pl/guests/(从内部加载 index.php) 所以它可以工作,但是它附加了查询字符串?然后不要使用 QSA以上是关于如何为一个子类别禁用 RewriteRule?的主要内容,如果未能解决你的问题,请参考以下文章