Вопрос

Я работаю над чистыми URL-адресами для своего веб-сайта и заметил, что то, что вы найдете в Интернете, в значительной степени связано с перезаписью ваших чистых URL-адресов на URL-адрес, с которым может работать ваш сервер.Итак, что-то вроде этого:

www.domain.com/profile/username --> www.domain.com/profile.php?u=username

RewriteEngine On
RewriteRule ^profile/(.*)$ /profile.php?u=$1 [L]

Итак, теперь я должен сделать ссылку на своем веб-сайте на Cleanurl.Но интуитивно кажется более надежным/лучше дать ссылку на «грязный» URL.Поэтому в этом случае вам следует использовать правила переписывания для вышеуказанного И правило перенаправления, чтобы переориентировать «грязный URL-адрес» на чистый URL-адрес, чтобы пользователь всегда видел только чистый URL-адрес в браузере.

www.domain.com/profile.php?u=username --> www.domain.com/profile/username

Это что-то хорошее?Это делается с помощью веб-сайтов?Какие аргументы против/за это?

И как вы делаете такое перенаправление?Кажется, что-то вроде следующего не работает:

RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]

Я новичок в .htaccess, поэтому могу спросить что-то очевидное...

Это было полезно?

Решение

RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]

Это не сработает, потому что вы не можете сопоставить строку запроса из RewriteRule (у вас также есть свободное место в ваших флагах).Вы также хотите сопоставить фактический запрос, а не URI, потому что вы просто вызовете цикл перенаправления из другого правила.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profile\.php\?u=([^&\ ]+)
RewriteRule ^/?profile\.php$ /profile/%1 [R=301,L]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top