Простой ReWriteRule расширен с помощью якоря - PullRequest
0 голосов
/ 17 марта 2012

Привет из Центральной Австралии, спасибо за помощь

У меня есть простой переписать, как это

RewriteEngine on
RewriteRule Trades-Services-(.*) Trades-Services.php?cat=$1 [L,NC]

то, что это делает, превращает URL-адрес, как это

http://website.com/Trades-Services-Plumber

в это

http://website.com/Trades-Services.php?cat=Plumber

я надеюсь на дальнейшее (или комплимент) это правило переписывания, чтобы оно перевернуло

http://website.com/Trades-Services-Plumber-123

в это

http://website.com/Trades-Services.php?cat=Plumber&ad=123#123
  • Где он также бросает якорь (# 123)
  • 123 может быть любым числом и всегда совпадает с якорем
  • при сохранении этой первой функциональности
  • может также работать с URL-адресом типа Civil-Celebrant вместо Plumber

1028 * например *

http://website.com/Trades-Services-Civil-Celebrant-123
to
http://website.com/Trades-Services.php?cat=Civil-Celebrant&ad=123#123

Thankyou

1 Ответ

1 голос
/ 18 марта 2012

Чтобы выполнить основную часть переписывания, вам нужно изменить существующие правила и добавить дополнительное для обработки второго случая:

RewriteEngine on
RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2 [L,NC]
RewriteRule ^Trades-Services-(.+)$ /Trades-Services.php?cat=$1 [L,NC]

Это должно охватывать 3 из 4 ваших требований, кромедля первого:

Где он также бросает привязку (# 123)

Фрагмент URL, бит # 123 , имеет видобрабатываются браузером, и когда в URL есть #name, фрагмент #name никогда не отправляется на сервер.Так что сервер никак не может знать о фрагменте, это то, что видит браузер, и браузер ищет привязку в документе.Что-то, что вы можете сделать, это перенаправить , чтобы получить привязку.Первое правило будет выглядеть следующим образом:

RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2#$2 [L,NC,R]

Однако, когда кто-то вводит http://website.com/Trades-Services-Plumber-123 в адресную строку своего браузера, это правило перенаправит браузер на http://website.com/Trades-Services.php?cat=Plumber&ad=123#123,, таким образом, чтов адресной строке их браузера меняется на php URI.Это не то же самое поведение, которое вы используете в своем исходном правиле (которое перенаправляет внутренне на стороне сервера, сохраняя то, что находится в адресной строке браузера).Другая вещь, которую вы можете сделать, это когда вы генерируете ссылки типа http://website.com/Trades-Services-Plumber-123,, убедитесь, что к нему добавлен фрагмент: http://website.com/Trades-Services-Plumber-123#123.

...