【问题标题】:.htaccess url-rewrite conflicting with filename in root folder.htaccess url-rewrite 与根文件夹中的文件名冲突
【发布时间】:2013-06-30 02:18:16
【问题描述】:

我的根文件夹中有以下 .htaccess 规则:-

RewriteEngine On
RewriteRule ^([^/]*)$ /user.php?user=$1 [L]
RewriteRule ^project/([^/]*)$ /project.php?id=$1 [L]

所以,这基本上可以 -> http://example.com/user.php?user=stackoverflow 也可以从 http://example.com/stackoverflow 获得,但是当我浏览 http://example.com/login.php或我的任何页面,它会给出 Internal Server ERROR 500。

当我使用http://example.com/user/stackoverflow 时,一切工作正常

我的猜测是,URL 重写 与根文件夹中的 filename 冲突,如果是,我如何禁用文件名检查或任何其他更好的规则.

更新:规则[仍然无法正常工作]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]*)$ /user.php?user=$1 [L]
RewriteRule ^project/([^/]*)$ /project.php?id=$1 [L]

谢谢

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    您只需要重写不存在的路径。使用以下 .htaccess 规则

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^project/([^/]*)$ /project.php?id=$1 [L]    
    RewriteRule ^([^/]*)$ /user.php?user=$1 [L]
    

    【讨论】:

    • 不工作我仍然收到内部服务器错误 500。
    • 没有甚至项目不工作......早些时候example.com/user/stackoverflow它工作了
    • 试试我的更新代码,先看看 /user/stackoverflow 是否有效
    • 是的,文件、用户和项目都工作正常。但我需要它没有用户参数。
    • 不!它不起作用 :(,我想我会坚持使用 example.com/user/stackoverflow 而不是 example.com/stackoverflow。非常感谢您抽出时间 DevZe0。
    猜你喜欢
    • 2021-07-04
    • 2014-09-03
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多