我在网上搜索了我的 mod_rewrite 问题的答案,但我觉得我已经无计可施了。我会有一个这样的网址:http://www.website.com/dashboard.php?username=stackoverflow
. 这个网址不是最漂亮的。所以我的目标是在这里做一些事情......
- 消除 php 文件的扩展名(到目前为止,我已经能够使用我将在下面显示的代码做到这一点,但我不知道它是否会根据我需要做的其他事情保留)
- 消除“www”前缀
- 将用户名查询字符串(仅当它是“用户名”,我不想匹配“id”等)直接移动到“.com/”之后
- 在查询字符串之后移动 php 文件名(不带扩展名)。
最终 URL 应如下所示:http://website.com/stackoverflow/dashboard
或者http://website.com/stackoverflow/profile
.
我现在拥有的消除文件扩展名的代码是这样的:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# remove .php ONLY if requested directly
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]
# remove trailing slash ONLY if it is not an existing folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# rewrite to FILENAME.php if such file does exist and is not a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L,QSA]
可悲的是,这只解决了我的一个问题,在看了之后,我觉得会有更好的方法来做到这一点......