[英]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.