2016-03-12 164 views
2

所以我在我的htaccess以下規則:URL重寫和URL重定向

RewriteEngine on 
RewriteBase /blog/ 
RewriteRule ^post/ post.php [L] 

這讓我通過localhost/blog/post/

訪問localhost/blog/post.php現在,當我直接輸入localhost/blog/post.php它不會重定向我localhost/blog/post/

有沒有辦法在.htaccess中重定向到localhost/blog/post/,或者我應該這樣做在PHP代碼?

回答

3

你需要一個額外的規則/post.php重定向到/後

RewriteEngine on 
RewriteBase /blog/ 
#1)--redirect /post.php to /post--# 
RewriteCond %{THE_REQUEST} /post\.php 
RewriteRule^/blog/post/ [NC,L,R] 
#2)--rewrite /post to /post.php--# 
RewriteRule ^post/ post.php [L] 
+1

這工作!你能解釋重定向部分是如何工作的嗎? – YounesM

+1

@Younes代碼的第一部分將瀏覽器從**/post.php **重定向到**/post/**,而第二部分則將**/post/**重寫回它的原始位置,內部發生並且瀏覽器保持在/發佈後 – starkeen

+2

而且這避免了重定向循環,因爲'THE_REQUEST'只包含有關*原始*請求的信息 - 它從不改變。 –