Возникли проблемы с .htaccess и чистыми URL, нужно перенаправить при вводе "грязного" URL - PullRequest
0 голосов
/ 13 января 2019

Я знаю, что есть миллион подобных вопросов на подобные вещи, но, очевидно, я многого не понимаю, потому что не смог найти ответов или решения моего (насколько я понимаю) довольно простого вопроса.

По сути, я пытаюсь восстановить старый сайт, но на этот раз хочу посмотреть его более профессионально, включая очистку URL-адресов. Типичная страница выглядит следующим образом (в данный момент размещается локально, но в ближайшие дни ей будет присвоен домен):

192.168.0.200 / альбом-reviews.php? Albid = 22 * ​​1005 *

Используя следующий код, я смог загрузить приведенный выше пример страницы, вручную набрав 192.168.0.200/album-reviews/22 в браузере:

RewriteRule ^album-reviews/([0-9a-zA-Z]+) album-reviews.php?albid=$1 [NC,L]

Тем не менее, то, что я хочу, это то, что, когда ссылка нажимается на моем сайте, он направляет пользователя к / album-reviews / 22 вместо album-reviews.php? Albid = 22. Единственный способ получить чистый URL-адрес в данный момент - это ввести его вручную в строку, ссылки с моего сайта не получают чистый URL-адрес, код, с которым я играюсь (и не могу работать) на основе источники, которые я нашел, это:

RewriteCond %{THE_REQUEST} /album-reviews/?(?:\.php)?\?albid=([0-9a-zA-Z]+)
RewriteRule ^ /album-reviews/%1? [L,R]

Так что, если бы кто-нибудь мог пролить некоторый свет на то, как я все это работаю, как хотелось бы, я был бы благодарен, я надеюсь, что мой вопрос был сформулирован надлежащим образом.

На заметку: если я хочу включить заголовок записи в URL, тоже так:

192.168.0.200 / album-reviews.php? Albid = 22 & ptitle = мой первый пост

как бы изменить любой код, чтобы он был таким:

192.168.0.200 / рецензии на альбом / 22 / мой первый пост

Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Если вы хотите показать содержимое http://yoursite.com/album-reviews.php?albid=22 в URL http://yoursite.com/album-reviews/22, вам нужны эти коды:

Вашему htaccess нужны следующие строки:

RewriteEngine On
Options -Indexes
RewriteRule ^album-reviews/(.*)$ album-reviews.php?pretty=$1 [L,QSA]

А ваш PHP это:

$pretty = $_GET['pretty'];
$parameters = explode('/',$pretty);
$albid = $parameters[0];

Ваш пользователь не будет перенаправлен, ваш веб-сайт будет показывать страницу непосредственно по симпатичному URL.

Теперь, что случилось? То, что вы указали htaccess отправлять все после рецензий на альбом как параметр GET, называемый "pretty". Затем в вашем PHP вы обрезаете его для каждого /, который в нем появляется, и таким образом вы формируете массив $parameters. Таким образом, вы даже можете получить больше параметров, для каждого / они все находятся в массиве $ parameters:

$second_parameter = $parameters[1];
$third_parameter = $parameters[2];
$fourth_parameter = $parameters[3];
0 голосов
/ 13 января 2019

Вы можете использовать:

Options -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} /album-reviews/?(?:\.php)?\?albid=([^\s&]+)&ptitle=([^\s&]+)
RewriteRule ^ album-reviews/%1/%2? [L,R=301]
RewriteCond %{THE_REQUEST} /album-reviews/?(?:\.php)?\?albid=([^\s&]+)
RewriteRule ^ album-reviews/%1? [L,R=301]

RewriteRule ^album-reviews/([^/]+)/?$ album-reviews.php?albid=$1 [NC,L]
RewriteRule ^album-reviews/([^/]+)/([^/]+)/?$ album-reviews.php?albid=$1&ptitle=$2 [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...