помогите с htaccess - PullRequest
       3

помогите с htaccess

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

Я хочу перенаправить это:

foo.com/xxx

... на это:

foo.com/somepage.php?id=xxx

Вот как я это делаю:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^/]+)$ http://foo.com/somepage.php?id=$1 [L]

проблема сейчас в том, что foo.com больше не работает. Я не вижу ни foo.com, ни foo.com/index.php

помоги мне! :)

Ответы [ 3 ]

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

1) Вам не нужна строка RewriteCond. Он предназначен для определения КОГДА вашего правила, а НЕ КАКОЙ ЧАСТИ запроса.

[EDIT] UNLESS, ваш RewriteCond существует, чтобы это правило применялось всякий раз, когда строка запроса пуста. Если это так, то в этом нет ничего плохого.

2) Я думаю, вам нужно включить первое / в ваше правило, например:

RewriteRule ^/([^/]+)$ /somepage.php?id=$1 [L]

[EDIT] И ваша версия, и моя будут соответствовать вашему файлу index.php, что может объяснить, почему ваш сайт сейчас не работает. Если вы не хотите сопоставлять php-файлы, вы можете добавить еще одно условие, например

RewriteCond ${REQUEST_URI} !^.*\.php$

3) Для правила, подобного этому, было бы полезно добавить /? в конце (вне паренов, перед $), если они ищут foot.com/xxx/, что имеет смысл, если вы хочу, чтобы он выглядел как каталог.

1 голос
/ 06 мая 2010
RewriteRule ^/([^/]+)$ /somepage.php?id=$1 [L]

Будьте осторожны, foo.com/1 - ПЛОХОЙ шаг в SEO.

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

Попробуйте:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(xxx=)$ /somepage.php?id=$1 [L]

Конечно, вы не четко указали, что такое ххх = ...

...