我不是专业人士,但在我的帮助下,我可以使用Rewrite_mod
使用以下内容为我的项目中的用户重命名配置文件页面网址:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 [QSA]
这很好用。但我无法弄清楚如何为特定页面指定特定名称。例如,当用户转到该页面时,我有一个页面profile_settings.php
我希望它在地址栏中为example.com/settings
。尝试了一些方法,例如删除.php
,认为它会删除所有文件的php
扩展名,但它根本不起作用。现在我的.htaccess看起来像:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
希望example.com/profile_settings.php
成为example.com/profile_settings
,但它不起作用它仍然是文件扩展名的完整地址。如果我可以单独处理单个文件将是好的,因为除了删除扩展我还希望它给出所需的名称。
答案 0 :(得分:1)
/settings -> /profile_settings.php
等特定情况的重写需要单独处理,之前其他通用规则:
RewriteEngine On
# specific rewrite rules
RewriteCond %{THE_REQUEST} /profile_settings\.php[\s/?] [NC]
RewriteRule ^ /settings [R=301,L]
RewriteRule ^settings/?$ profile_settings.php [L,NC]
# add .php extension if corresponding .php file exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
# handle profile page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ profile.php?username=$1 [QSA,L]