【问题标题】:Issues with rewrite I cant figure out重写的问题我想不通
【发布时间】:2015-12-10 22:42:08
【问题描述】:

我正在努力使我的链接更加用户友好,现在它们就像

http://localhost/messages/?s=whatever
to
http://localhost/messages/whatever

但只有首先出现的 RewriteRule 有效,所以现在只有消息有效,其他给我Internal Server Error。但是如果我把RewriteRule ^users/([^/]*)$ /users/index.php?s=$1 [L,QSA,NC] 上面的消息重写规则只去/users/view 工作。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^messages/([^/]*)$ /messages/index.php?s=$1 [L,QSA,NC]
RewriteRule ^users/([^/]*)$ /users/index.php?s=$1 [L,QSA,NC]
RewriteRule ^notes/([^/]*)$ /notes/index.php?s=$1 [L,QSA,NC]
RewriteRule ^posts/([^/]*)$ /posts/index.php?s=$1 [L,QSA,NC]

【问题讨论】:

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


    【解决方案1】:

    您的问题是您的 rewriteRules 正在将 url 重写回自身。 例如,正则表达式模式 ^users/([^/]*)$ 匹配 /users/index.php 并将其重写为 /user/index.php,这就是您获得 500 ISE 的原因。

    你需要在你的模式中排除点([^./]*),这样目标路径就不能匹配模式。

    RewriteEngine On
    RewriteRule ^messages/([^/.]*)$ /messages/index.php?s=$1 [L,QSA,NC]
    RewriteRule ^users/([^/.]*)$ /users/index.php?s=$1 [L,QSA,NC]
    RewriteRule ^notes/([^./]*)$ /notes/index.php?s=$1 [L,QSA,NC]
    RewriteRule ^posts/([^/.]*)$ /posts/index.php?s=$1 [L,QSA,NC]
    

    【讨论】:

    • 我的英雄,我认为没有人会回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多