[英]Mod Rewrite Htaccess for Fake Directories
我正在嘗試創建偽目錄以將特定參數重定向到特定子目錄,例如:
From: www.example.com/username
To: www.example.com/posts?uid=alex
From: www.example.com/p/1234
To: www.example.com/posts?url=1234
從其余問題來看,這是一個更為復雜的示例,其中關於stackoverflow的主題相同,並且大多數答案都沒有給出有關其工作原理的解釋,因此我無法就如何解決此問題得出結論。
嘗試:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p/([^/]+)$ /posts?url=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /posts?uid=$1 [L]
首先,您需要使所有鏈接看起來像這樣:
www.example.com/username
www.example.com/p/1234
上面的重寫規則將匹配/p/1234
(通過^p/([^/]+)$
)和/username
(通過^([^/]+)$
),並在內部將它們重寫為/posts
URI。 請注意,這不會更改瀏覽器位置欄中的URL,因為這是外部重定向。 如果有人輸入www.example.com/posts?uid=alex
,則URL將保持不變。
通過httpd.conf
啟用mod_rewrite
和.htaccess
,然后將此代碼放入DOCUMENT_ROOT/.htaccess
文件中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([^/]+)/?$ /posts?url=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /posts?uid=$1 [L,QSA,NC]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.