Apache2 RewriteRule 500 内部服务器错误
Apache2 RewriteRule 500 Internal Server Error
我正在尝试重写我的 URL,其中一些正在工作,但另一个(这是一个额外的目录级别深度)产生了 500 内部服务器错误。我不确定为什么会这样,并且由于各种原因无法打开日志记录。
我的 .htaccess 文件如下所示:
Options +FollowSymLinks
RewriteEngine On
# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/.+$ /account/order.php?order_id= [L]
# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/.+$ /advertiser.php?advertiser_id= [L]
# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
advertiser.php 的重写规则的 URL 可能如下所示:http://domain.com/advertiser/1234
这很好用。
但是,我的 account/order.php 重写规则没有。它会产生 500 错误。 URL 可能如下所示:http://domain.com/account/order/1234
我能看到的唯一区别是重写规则中有另一个目录,而工作规则没有。我遗漏了什么可能会导致此错误?
谢谢!
不确定为什么在模式末尾有额外的 .+
。试试这个代码:
ErrorDocument 404 default
Options +FollowSymLinks
RewriteEngine On
# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/?$ account/order.php?order_id= [L,QSA,NC]
# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/?$ advertiser.php?advertiser_id= [L,QSA,NC]
# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php [L]
我正在尝试重写我的 URL,其中一些正在工作,但另一个(这是一个额外的目录级别深度)产生了 500 内部服务器错误。我不确定为什么会这样,并且由于各种原因无法打开日志记录。
我的 .htaccess 文件如下所示:
Options +FollowSymLinks
RewriteEngine On
# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/.+$ /account/order.php?order_id= [L]
# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/.+$ /advertiser.php?advertiser_id= [L]
# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
advertiser.php 的重写规则的 URL 可能如下所示:http://domain.com/advertiser/1234
这很好用。
但是,我的 account/order.php 重写规则没有。它会产生 500 错误。 URL 可能如下所示:http://domain.com/account/order/1234
我能看到的唯一区别是重写规则中有另一个目录,而工作规则没有。我遗漏了什么可能会导致此错误?
谢谢!
不确定为什么在模式末尾有额外的 .+
。试试这个代码:
ErrorDocument 404 default
Options +FollowSymLinks
RewriteEngine On
# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/?$ account/order.php?order_id= [L,QSA,NC]
# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/?$ advertiser.php?advertiser_id= [L,QSA,NC]
# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php [L]