继续获得500内部服务器错误URL重写

时间:2014-04-02 14:18:30

标签: regex apache .htaccess mod-rewrite url-rewriting

我有类似以下页面的内容:

www.domain.com/games/?puzzle=value

我希望它显示为

www.domain.com/games/value

这是我写的转发到原始域的重写导致500内部服务器错误:

#forward games/value to games/?puzzle=value
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

有人会帮我解决我的问题吗,我真的很难重写。

编辑:

我目前正在使用以下内容在我的主页上允许来自foo的参数。

# Internally forward /value to /index.php?foo=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /index.php?foo=$1 [L,QSA]

如果我将其删除,那么以下内容将适用于我想要的内容,但我需要两个实例都能正常工作。

#forward games/value to games/?puzzle=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

1 个答案:

答案 0 :(得分:1)

这是由于循环,因为重写后的URL也匹配您的模式^games/(.+?)/?$

您需要从此重写规则中排除实际文件/目录:

#forward games/value to games/?puzzle=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

# Internally forward /value to /index.php?foo=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /index.php?foo=$1 [L,QSA]