изменение mod_rewrite / subpage / to / subpage - PullRequest
1 голос
/ 01 декабря 2010

Окей, так это моя проблема. Я хочу использовать mod_rewrite, чтобы сделать красивые URL для моего сайта.

Я хочу, чтобы у всех них был красивый URL, например www.mypage / tennis или www.mypage / soccer, а не www.mypage /? Page = теннис и www.mypage /? Page = футбол

И с помощью следующих правил я могу достичь этого:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule .* index.php [L]

Так что теперь, если я ввожу www.mypage / soccer, мой PHP-скрипт читает этот URL-адрес и делает его волшебным, переводя его в $ _GET ['page'] = soccer. Все это прекрасно работает!

Проблема в , если бы я набрал URL www.mypage / soccer / , внезапно каждый связанный css или рисунок не может быть найден сайтом, так как он теперь просматривает несуществующая папка / soccer / вне курса.

Как создать правило перезаписи, которое преобразует / soccer / в / soccer или в любое другое / blabla / to / blabla

Надеюсь, мой вопрос ясен! Также, если у кого-нибудь есть хорошие страницы, где я могу узнать больше регулярных выражений, я был бы очень рад!

Ответы [ 3 ]

1 голос
/ 01 декабря 2010

Попробуйте это:

RewriteRule ^([A-Za-z0-9-]+)/?$ ?page=$1 [L]
1 голос
/ 01 декабря 2010
#  For URIs with query string:

RewriteCond %{QUERY_STRING} (.+)
RewriteRule (.*)/$ ?page=$1&%1 [L]

#  All other

RewriteRule (.*)/$ ?page=$1 [L]
1 голос
/ 01 декабря 2010

Я думаю, вам не следует использовать mod_rewrite для этого, вместо этого исправьте ваши CSS и пути к изображениям.

Изменить пути с относительно абсолютного , Это означает, что пути должны начинаться с /.

Если у вас это есть, независимо от того, на каком сайте вы находитесь, /images/myimage.png всегда будет ссылаться на www.mypage.com/images/myimage.png.

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