.htaccess RewriteRule для плоских ссылок - PullRequest
1 голос
/ 21 июня 2011

Я довольно новичок в использовании RewriteRule, поэтому я, скорее всего, упускаю что-то очевидное, но у меня есть PHP-скрипт, который принимает переменные URL, такие как:

{baseurl}properties.php?prop=Property-Name

Я хотел бы создать RewriteRules, чтобы у любого, кто вводит в этом комбо имя / переменную сценария, был переписан URL-адрес:

{baseurl}/properties/Property-Name

Помимо того, что любой, кто вводит URL-адрес плоской ссылки, действительно вызывает сценарий с правильным именем и значением переменной.

Я имел в виду эту ссылку , и я нашел связанные темы:

Mod_rewrite плоские ссылки

Проблема Mod_rewrite: Хотите перейти от? = К плоской ссылке, кажется, ничего не работает

Но я, очевидно, что-то делаю не так, так как не могу заставить этот URL работать так, как я хочу. В настоящее время я использую следующий код, который, похоже, ничего не делает (кроме переписывания URL-адреса для включения www и перенаправления запросов на index.php в корень сайта):

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^baseurl.com$ [NC]
RewriteRule ^(.*)$ http://www.baseurl.com/$1 [R=301,L]
RewriteRule ^index.php / [R=301,L]
RewriteRule ^properties/([0-9A-Za-z]+)/$ /properties.php?prop=$1

Проблема явно в последнем RewriteRule, при условии, что ничто из вышеперечисленного не влияет на него. Опять же, я, вероятно, делаю что-то смешное. Может кто-нибудь объяснить, что я делаю не так?

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Если вы посмотрите на ваше правило ^properties/([0-9A-Za-z]+)/$, вы увидите, что оно должно заканчиваться косой чертой. Вы можете либо удалить это, либо сделать его необязательным, например ^properties/([0-9A-Za-z]+)/?$.

2 голосов
/ 21 июня 2011

На первый взгляд кажется, что вы забыли включить тире в свое регулярное выражение и включили косую черту. Используйте это вместо:

RewriteRule ^properties/([0-9A-Za-z-]+)$ /properties.php?prop=$1
...