2016-03-12 2 views
2

Так что я следующее правило в моем HTAccess:URL переписывания и перенаправление URL

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

Это дает мне доступ к localhost/blog/post.php через localhost/blog/post/

Теперь, когда я непосредственно набрав localhost/blog/post.php это не перенаправляет me to localhost/blog/post/

Есть ли способ перенаправить на localhost/blog/post/ в .htaccess, или я должен сделать это в 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/** обратно в свое местоположение orignal, это происходит внутри, и браузер остается включенным/post – starkeen

+2

И это позволяет избежать циклов перенаправления, поскольку 'THE_REQUEST' только когда-либо содержит информацию о запросе * original * - он никогда не изменяется. –

Смежные вопросы