首页 > 解决方案 > 如何使用 .htaccess 用 @username 重写 URL

问题描述

我在 PHP 中有一个配置文件系统。如果你想访问他们的个人资料,你必须转到 /profile.php?user=username 我希望能够重写这个 /@username。

目前,我的 .htaccess 代码是这样的:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ - [F]
    RewriteRule ^@(.*)$ profile.php?user=$1 [L,QSA]

修复:我必须在我的 apache 配置中将 AllowOverride 更改为 All。

<Directory /path/to/directory>
   AllowOverride All
</Directory>

并将我的 htaccess 文件更改为:(感谢回答此问题的人)

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^@(.*)/?$ profile.php?user=$1 [L]

标签: apache.htaccessmod-rewriteurl-rewritingfriendly-url

解决方案


根据您显示的示例,您能否尝试以下操作。考虑到您正在点击http://localhost:80/@test"您希望它提供服务的URLhttp://localhost:80/profile.php?user=$1

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^@(.*)/?$ profile.php?user=$1 [L]

也正如评论中提到的,你不想使用[F]你的规则显示的示例 htaccess 所以我已经从这里删除了。


推荐阅读