我已经在网上搜索了我的mod_rewrite问题的答案,我觉得我已经结束了我的智慧。我会有这样的网址:http://www.website.com/dashboard.php?username=stackoverflow
。这个网址并不是最漂亮的。所以我的目标是在这里做一些事情......
最终网址应如下所示: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]
可悲的是,这只解决了我的一个问题,看了之后,我感觉会有更好的方法来做到这一点......
答案 0 :(得分:1)
(1,3,4)据我所知,您希望使用漂亮的URL,但由PHP页面支持。所以它应该是这样的:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\w+)/profile$ /dashboard.php?username=$1 [L]
这会使http://website.com/stackoverflow/profile
作为http://www.website.com/dashboard.php?username=stackoverflow
(2) #使用301
将www.site.com重定向到site.com RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]