.htaccess重定向显示内部服务器错误

时间:2013-07-04 14:07:39

标签: .htaccess

我想将查询参数重写为使用.htaccess分隔的斜杠

重写示例

http:www.site.com/user/comfirm/index.php?confirm=x22xx22xxx

http:www.site.com/user/comfirm/x22xx22xxx

要做到这一点,我正在尝试这种方式

RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L, QSA]

但它显示内部服务器错误。

还尝试了一些变体,例如将/user/更改为user/,并且喜欢这样。

RewriteRule ^/user/confirm/(.*)/$ /user/confirm/index.php?confirm=$1 [L]

但显示404错误

请参阅并建议任何可行的方法。

3 个答案:

答案 0 :(得分:1)

有两个问题:

删除标记中的空格:[L,QSA]

模式也错了,试试这个:

RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA]

调试htaccess问题的一种简单方法是检查您的Web服务器(Apache)日志,常见的error_log或errors.log,具体取决于您的设置。

答案 1 :(得分:1)

试试这段代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,NC,QSA]

如果不起作用,请在您的问题中发布完整的.htaccess。

编辑:建议.htaccess:

Options +FollowSymlinks-MultiViews
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,QSA,NC]

RewriteRule ^sitemap\.xml$ sitemap.php [L]

RewriteRule ^rss/(.+?)\.xml$ rss/$1.php [L]

RewriteRule ^([^/]*)/(.+?\.html)$ /software/?pflink=$1&pagelink=$2 [L,QSA,NC]
</IfModule>

答案 2 :(得分:0)

我通过从root .htaccess

中删除此重写规则解决了这个问题
RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA]

将另一个.htaccess文件放在confirm目录中以隐藏index.php并使用以下代码处理查询参数。

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?confirm=$1 [L]
</IfModule>

现在它的工作。希望这也能帮助其他人解决同样的问题。