Apache2 RewriteRule 500内部服务器错误

时间:2015-07-12 04:19:35

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

我正在尝试重写我的URL,有些正在运行但是另一个(这是一个额外的目录级别深)会产生500内部服务器错误。我不确定为什么会发生这种情况,并且出于各种原因无法打开日志记录。

我的.htaccess文件如下所示:

Options +FollowSymLinks
RewriteEngine On

# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/.+$ /account/order.php?order_id=$1 [L]

# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/.+$ /advertiser.php?advertiser_id=$1 [L]

# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

advertiser.php的重写规则的网址可能如下所示:http://domain.com/advertiser/1234

这很好用。

但是,我对account / order.php的重写规则却没有。它产生500错误。网址可能如下所示:http://domain.com/account/order/1234

我能看到的唯一区别是重写规则中有另一个目录,而工作的目录却没有。我错过了什么可能导致此错误?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定为什么在模式结尾有额外的.+。试试这段代码:

ErrorDocument 404 default
Options +FollowSymLinks
RewriteEngine On

# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/?$ account/order.php?order_id=$1 [L,QSA,NC]

# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/?$ advertiser.php?advertiser_id=$1 [L,QSA,NC]

# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]