.htaccess URL重写特定文件的地址。

问题描述 投票:0回答:1

我想把URL设置成www.example.comusernamefor 类似于www.example.comprofile.php?name=username。

我在我的.htaccess中试了一下。

    RewriteEngine on
    RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]

但这使得它对所有的页面都有效。我希望只有当URL是www.example.comusername的时候才可以工作,但是对于www.example.comusers.php也可以工作。

如果user.php或其他.php文件被打开,那么重写规则就不应该适用于它。

如何实现这个目标?

.htaccess mod-rewrite
1个回答
0
投票

你可以添加一个重写条件的请求uriwhich匹配所有不以.php结尾的东西。

例如:: (未测试)

RewriteEngine on
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]

检查 uri 是否真的是一个文件在框架中非常流行,但它比以 .php 结尾的字符串匹配慢,因为每次请求 apache 都需要检查文件是否存在于磁盘上。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
© www.soinside.com 2019 - 2024. All rights reserved.