Apache2重写规则500内部服务器错误

Apache2重写规则500内部服务器错误,apache,.htaccess,mod-rewrite,url-rewriting,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] #

我正试图重写我的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的重写规则的URL可能如下所示:

这个很好用

但是,我对account/order.php的重写规则不适用。它产生500个错误。URL可能如下所示:

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


谢谢

不确定为什么在模式末尾有额外的
+
。请尝试以下代码:

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]

尝试将这两个规则都更改为:RewriteRule^account/order/([a-z0-9]+)/。+$/account/order.php?order_id=$1[R,L]RewriteRule^account/order/([a-z0-9]+)/。+$/account/order.php?order_id=$1[R,L]修复了它。为什么呢?我承认我对正则表达式不是很有经验,所以我不能完全确定为什么我最后会有额外的“+”。但是,我也看到您在括号中添加了QSA和NC。有什么区别?