[英]Apache mod_rewrite query string before page and remove extention
我已经搜索了 web 来寻找我的 mod_rewrite 问题的答案,我觉得我已经无计可施了。 我会有这样的 URL: http://www.website.com/dashboard.php?username=stackoverflow
。 这个 url 不是最漂亮的。 所以我的目标是在这里做一些事情......
最终的 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]
遗憾的是,这只能解决我的一个问题,在查看之后,我觉得会有更好的方法来做到这一点......
(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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.