mod_rewrite страница, украшающая - PullRequest
0 голосов
/ 18 мая 2010

Так что я застрял. Я не очень хорош с mod_rewrite или регулярными выражениями в целом, и это доставляет мне проблемы.

Мне нужно перенаправить URL-адрес, как
domain.com/view/Some_Article_Name.html
до
domain.com/index.php?p=view&id=Some_Article_Name

Правило, которое у меня сейчас работает, прекрасно работает, но оно также переписывает все мои таблицы стилей, изображения и прочее, которые не следует переписывать.
RewriteRule ^view/([^/]*)\.html$ /index.php?p=view&id=$1 [L]

Он должен перенаправлять только те страницы, которые начинаются с domain.com/view/*. Я полагаю, что все, что мне нужно, это перезаписать секунду, но я не могу создать ту, которая работает. Есть идеи, что мне нужно добавить к этому, чтобы заставить его работать без написания rewriterule для каждого отдельного файла?

RewriteCond %{REQUEST_FILENAME} ^(.*)\.html [NC]<br> RewriteRule ^view/([^/]*)\.html$ /index.php?p=view&id=$1 [L]
мое заявление переписать для этого.

Ответы [ 2 ]

1 голос
/ 18 мая 2010

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

Я скорее полагаю, что вы используете относительные URL-пути для ссылки на таблицы стилей и изображения, такие как ./css/style.css или images/foo/bar.png. Такие относительные URL-пути разрешаются из базового URL-пути. И это URL-адрес текущего документа.

Ваш исходный URL-путь имел только один сегмент пути, и все относительные URL-пути работали при запуске с этой точки. Но теперь вы вводите другой сегмент пути (/view), и относительные пути разрешаются из этого пути. Так что ./css/style.css или images/foo/bar.png теперь разрешено до /view/css/style.css и /view/images/foo/bar.png вместо /css/style.css и /images/foo/bar.png, как это было с /index.php.

Решение: используйте абсолютные URL-пути, такие как /css/style.css или /images/foo/bar.png, чтобы ссылаться на ваши внешние ресурсы. С такими путями URL базовый URL может иметь любой путь, и ресурсы всегда разрешаются правильно.

0 голосов
/ 18 мая 2010

Вы хотите сказать, что вы хотите, чтобы css & images жили в исходном местоположении файла (например, на htdocs/view/, где htdocs - ваш исходный корень, но вы хотите, чтобы URL для html был перенаправлен в индекс. php файл?

Если это то, что вы говорите, то вам нужно и обратное RewriteRule, так как браузер будет выбирать любые CSS / изображения, относящиеся к перенаправленному URL (при условии относительных ссылок на изображения / CSS в HTML).

Кроме этого, я согласен с @David и не могу понять, как что-либо без view и .html может совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...