【问题标题】:htaccess RewriteRule 500 errorhtaccess RewriteRule 500 错误
【发布时间】:2013-12-04 18:27:20
【问题描述】:

假设我有这个:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^page(?:/error(?:/([^/]+))?)?/?$ page.php?error=$1 [L,QSA]

page/ 及以后(page/error/ 等)给我一个 500 错误。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    您可以使用此规则使最后一个斜杠和其他 URI 组件可选:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^page(?:/error(?:/([^/]+))?)?/?$ page.php?error=$1 [L,QSA]
    

    完整的.htaccess:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^page(?:/error(?:/([^/]+))?)?/?$ page.php?error=$1 [L,QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php [L]
    

    【讨论】:

    • 现在,当我只为page/ 使用斜杠时,它又给了我服务器错误。
    • 如果 URI 只是 /page 则错误为空,因此您可能不需要将其更改为 /page.php?error=
    • 是的,整个 /error/page 是可选的。错误只是说有一个错误,什么都不做。 /error/ 之后的部分是它指出的部分。例如page/error/something 会打电话给page.php?error=something
    • 这行得通,但是现在,当我转到 /page/page/ 时,它给了我一个无限循环。
    • 我已将原始帖子更新为现在正在发生的事情,但仍然无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2012-02-19
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多