• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

的.htaccess返回500,但被固定的重新排列规则时

apache 来源:Raaj Nadar 4次浏览

一些奇怪的东西在.htaccess文件发生的.htaccess返回500,但被固定的重新排列规则时

文件不工作

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*?)/([a-z0-9_-]+)$ $1/post?id=$2 [L,QSA] 
RewriteRule ^(.*?)/edit/([a-z0-9_-]+)$ $1/editpost.php?id=$2 [L,QSA] 

#RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 

但这部作品

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*?)/edit/([a-z0-9_-]+)$ $1/editpost.php?id=$2 [L,QSA] 
RewriteRule ^(.*?)/([a-z0-9_-]+)$ $1/post?id=$2 [L,QSA] 

#RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 

我只是重新安排了重写规则,并解决了问题。谁能解释为什么会发生这种情况我被困在这里超过2小时。

我是新来的URL重写,所以请详细解释。而实际上[L,QSA]呢?


===========解决方案如下:

RewriteCond仅适用于最近的RewriteRule。因此,在您第一个例子是只应用于此规则:

RewriteRule ^(.*?)/([a-z0-9_-]+)$ $1/post?id=$2 [L,QSA] 

两个底部RewriteRule没有任何RewriteCond执行,并导致无限循环。

你可以有你的规则:

RewriteEngine On 
RewriteBase/

# skip all files and directories from rules below  
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^(.*?)/edit/([\w-]+)/?$ $1/editpost.php?id=$2 [L,QSA] 

RewriteRule ^users/(\d+)/?$ profile.php?id=$1 [L,QSA] 

RewriteRule ^(.*?)/([\w-]+)/?$ $1/post?id=$2 [L,QSA] 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)