mod_rewrite Чистая перезапись URL - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь написать чистый URL для моего сайта. Я ладья ie в этом, так что прости меня. Мой файл .htaccess в настоящее время выглядит так:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ something.php?query=$1
RewriteRule ^([a-zA-Z0-9-]+)/$ something.php?query=$1

Первое правило, похоже, работает. Например, website.com/good-looking-query-string на самом деле переписывает в website.com/something.php?query=ugly+looking+query+string

Второе правило, где у меня проблема. Я не могу заставить этого отставного слэ sh работать. Например, website.com/good-looking-query-string/ появляется, чтобы открыть страницу, но без применения каких-либо правил CSS. Я заметил, что все ссылки в конечном итоге также добавляются в строку запроса. Например, ссылка на индекс. php заканчивается как website.com/good-looking-query-string/index.php

Мне нужно, чтобы этот конечный sla sh работал. Что в мире я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Ваша проблема на стороне клиента, вы используете относительные пути, но вам нужно использовать Root-relative пути. URL-адрес:

website.com/good-looking-query-string

загружается из root. URL-адрес:

website.com/good-looking-query-string/

загружается из каталога good-looking-query-string.

Так что вместо href="style.css" вы должны иметь "href =" / style. css "and the index issue should be href = "/ index. php" instead of href = "index. php" `.

Как отмечалось в предыдущем комментарии, ваше регулярное выражение можно упростить, добавив ? в конце Sla sh, чтобы сделать это вариант. Это не ваша проблема, просто упрощает правила.

RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1
0 голосов
/ 01 мая 2020

Вы можете объединить две строки в одну строку:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/?$ something.php?query=$1

В этом случае / будет необязательным

...