2010-01-11 174 views
0

这是我的网址htaccess的URL重写规则

http://mydomain.com/Anonymous/47/comments.php

我的档案托管脚本包含大量重写的,那么,如何可以重定向这种特定类型的URL而不相互冲突到的comments.php重写。

我htaccess文件

Options +FollowSymLinks 

RewriteEngine on 
##point to installation directory 
##if it is the root dir,enter/
##else /otherdir 
RewriteBase/

RewriteCond %{QUERY_STRING} ^d=([a-zA-Z0-9]{8,12})$ 
RewriteRule ^$ download.php?id=%1&type=1 [L] 

RewriteCond %{QUERY_STRING} ^d=([a-zA-Z0-9]{12})$ 
RewriteRule ^$ delete.php?id=%1 [L] 

RewriteRule ^file/([0-9]+)/(.*)$ download.php?id=$1&name=$2&type=2 [L] 
RewriteRule ^([a-z]{2})/file/([0-9]+)/(.*)$ download.php?setlang=$1&id=$2&name=$3&type=2 [L] 
RewriteRule ^myfolders/([0-9]+)-(.*)$ folders.php?fid=$1&name=$3&%{QUERY_STRING} [L] 
RewriteRule ^([a-z]{2})/myfolders/([0-9]+)-(.*)$ folders.php?setlang=$1&fid=$2&name=$3&%{QUERY_STRING} [L] 

RewriteRule ^topfiles/index([0-9]*)\.html$ top.php?s=$1&type=1 [L] 
RewriteRule ^([a-z]{2})/topfiles/index([0-9]*)\.html$ top.php?setlang=$1&s=$2&type=1 [L] 

RewriteRule ^([a-z]{2})$ ?setlang=$1 [QSA,L] 
RewriteRule ^([a-z]{2})/$ ?setlang=$1 [QSA,L] 
RewriteRule ^([a-z]{2})/(.*)\.php$ $2.php?setlang=$1 [QSA,L] 

RewriteRule ^content/([0-9a-zA-Z]+)\.html$ page_template.php?page=$1 [QSA,L] 

<IfModule mod_security.c> 
    # Turn off mod_security filtering. 
    SecFilterEngine Off 

    # The below probably isn't needed, 
    # but better safe than sorry. 
    SecFilterScanPOST Off 
</IfModule> 

<FilesMatch "\captcha.php$"> 
    Header set Cache-Control "max-age=1" 
</FilesMatch> 

回答

1

通过将其放在最后一位。要处理该规则,无论如何,首先将其放置并添加[L]标志。重写规则按照它们出现的顺序进行处理。请注意,如果您在.htaccess环境中执行此操作,重写规则将在无实际目标成功重写后重新启动,因此您必须添加如下内容:

RewriteRule ^comments\.php - [L] 
RewriteRule ^.*/[0-9]+/comments\.php comments.php [L,QSA] 
0

试试这个规则:

RewriteRule ^Anonymous/[0-9]+/comments\.php$ comments.php [L]