【问题标题】:.htaccess conflict between two rewrite rule.htaccess 两个重写规则之间的冲突
【发布时间】:2015-10-18 09:46:44
【问题描述】:

在我的网站中,两个重写规则相互冲突 我有我的用户的网址,例如= http://twekr.com/sam 我所有的网站页面都像http://twekr.com/login一样打开

现在这里是 htaccess 文件规则

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1

现在只有这条规则有效,因为它首先加载 =

RewriteCond %{REQUEST_FILENAME} !-d

如果我把配置文件重写规则放在上面

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1 (then this works)

这不是

RewriteCond %{REQUEST_FILENAME} !-d (does not work)

htaccess 规则有什么问题?

【问题讨论】:

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


    【解决方案1】:

    在添加.php 扩展之前,您应该检查.php 文件是否存在:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w-]+)/?$ profile.php?user=$1 [L,QSA]
    

    【讨论】:

    • 是的,我检查了每个文件和网址
    • 不确定该评论的用途。这个规则没有用吗?如果没有,请提供所有详细信息。
    猜你喜欢
    • 2012-06-09
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多