У меня есть проблемы с моим HTACCess код:

RewriteEngine on

RewriteRule ^about\/$ /about.php [L]
RewriteRule ^about?$ /about/ [L,R]

RewriteRule ^contact\/$ /contact.php [L]
RewriteRule ^contact?$ /contact/ [L,R]

RewriteRule ^([A-Za-z0-9\-]+)\/gallery\/$ /loc-gallery.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/gallery?$ /$1/gallery/ [L,R]

RewriteRule ^([A-Za-z0-9\-]+)\/location\/$ /loc-location.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/location?$ /$1/location/ [L,R]

RewriteRule ^([A-Za-z0-9\-]+)\/contact\/$ /loc-contact.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/contact?$ /$1/contact/ [L,R]

RewriteRule ^([A-Za-z0-9\-]+)\/$ /loc-home.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)?$ /$1/ [L,R]

Проблема в том, что если я хочу получить доступ:

http://example.com/about
http://example.com/contact

Я не перенаправлен на

`http://example.com/about/` and `http://example.com/contact/`

И когда я пытаюсь получить доступ к http://example.com/, меня перенаправляют на http://example.com//

Что я делаю не так? Заранее спасибо!

1
m3tsys 7 Мар 2018 в 22:06

1 ответ

Лучший ответ

Когда вы пытаетесь получить доступ к http://example.com/, я перенаправляюсь на http://example.com// происходит из-за этой строки:

RewriteRule ^([A-Za-z0-9\-]+)?$ /$1/ [L,R]

Это будет соответствовать пустую URI из-за этого Regex ^([A-Za-z0-9\-]+)?$ Это означает соответствие, если ([A-Za-z0-9\-]+), то или нет ?.

Должно получиться так:

RewriteRule ^([A-Za-z0-9\-]+)$ /$1/ [L,R]

Я также проанализировал ваш код и исправил следующие проблемы:

RewriteEngine on
RewriteRule ^about(\/)?$ /about.php [L]
RewriteRule ^contact(\/)?$ /contact.php [L]
RewriteRule ^([A-Za-z0-9\-]+)\/gallery(\/)?$ /loc-gallery.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/location(\/)?$ /loc-location.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/contact(\/)?$ /loc-contact.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)\/$ /loc-home.php?slug=$1 [L]
RewriteRule ^([A-Za-z0-9\-]+)$ /$1/ [L,R]

Прозрачный кэш браузера и проверьте его, если это нормально, изменяется R to R=301, чтобы получить постоянное перенаправление

1
Mohammed Elhag 8 Мар 2018 в 07:05