Как мне сделать .htaccess делать то, что я хочу?:) (добавление строки запроса в URL) - PullRequest
0 голосов
/ 08 августа 2010

В настоящее время мой .htaccess выглядит так ...

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule ^(.*)$ $1.php [L,QSA]  

В настоящее время он меняет любой файл /xxx.php на / xxx. Это отлично подходит для SEO. Однако я также хочу, чтобы г-н htaccess преобразовал определенные URL-адреса в строку URL + запроса. Например, когда пользователь переходит на

/ конкретные / somerandominfo

Затем somerandominfo передается в файл specific.php. У меня обычно не возникает проблем с переписыванием, но из-за своей необычной переписки я не могу понять, как это сделать.

Например, если я добавлю

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC]  

на мой .htaccess, затем нажатие / specific / somerandominfo просто дает мне большую жирную внутреннюю ошибку 500.

Любая помощь от ваших апачей-гуру была бы такой, такой крутой.

Спасибо!

p.s. Кто-нибудь хочет также добавить любые другие интересные SEO трюки, которые им нравятся? Я испеку тебе печенье.

Ответы [ 2 ]

1 голос
/ 08 августа 2010

Вы получаете 500 ошибок, потому что ваши правила создают бесконечный цикл. Проверьте журнал ошибок Apache, чтобы увидеть, если это правда. Поэтому вы должны правильно оформить свои правила. Может быть так:

RewriteRule ^([^/]*)$ $1.php [L]
RewriteRule ^(.*)/(.*)$ $1.php?var=$2 [L]
0 голосов
/ 08 августа 2010
RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC]

Это в основном правильно.Я бы просто добавил флаг B, например так:

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC,B]

Это заставляет группу захвата $1 правильно экранироваться для использования в строках запроса.Обратите внимание, что вы все еще можете использовать QSA для сохранения параметров запроса, использованных в исходном запросе (в дополнение к somerandominfo).

Возможно, вы захотите опубликовать свой фактический RewriteRule.

...