RewriteRule - проверить, существует ли определенный термин в URL, если не добавить его - PullRequest
0 голосов
/ 25 апреля 2011

Я постоянно сталкиваюсь с некоторыми проблемами htaccess / rewriterule.(И я новичок в этой области)

Предположим, у нас есть URL-адрес, подобный следующему: http://mypage.at/very/cool

URL-адрес должен выглядеть следующим образом (Потому что я использую AJAX-нагруженный контентчто требует этого): http://mypage.at/#ajx/very/cool

Поэтому я хотел бы добавить часть '#ajx' к каждому URL, который еще не содержит ее.Это означает, что если URL-адрес уже выглядит так: http://mypage.at/#ajx/so/pretty, тогда нет необходимости вносить изменения.

Поскольку я не уверен, что это создает проблемы с GoogleSearchIndex, я также хотел бы знать, есть ли способ исключить это правило для поисковых роботов.

Спасибо за любую помощь.Ripei

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Поскольку вы сообщили, что это не работает (возможно, потому, что ваша версия Apache не поддерживает RegEx в стиле Perl):

RewriteRule ^(?!#ajx)(.*)$ http://mypage.at/#ajx/$1 [L]

Я думаю, что это следует сделать:

RewriteCond %{REQUEST_URI} !^/#ajx
RewriteRule ^(.*)$ http://mypage.at/#ajx/$1 [L]

РЕДАКТИРОВАТЬ: После того, как я сам попробовал это и прочитал в Интернете, я не уверен, что это на самом деле возможно.Знак фунта (#) не является юридической частью URL.Этот ответ близок, но мне придется оставить его кому-то, кто знает больше, чтобы сказать, можно ли это сделать так, как попросил @Ripei.

0 голосов
/ 28 апреля 2011

Ха, наконец, после лота чтения и тестирования - я понял.

RewriteCond %{REQUEST_URI} !^#ajx
RewriteRule . /\#ajx%{REQUEST_URI} [L,R,NE]

Этот кодекс работает для меня ... не спрашивайте меня, почему этот кодекс работает, если честно, я понятия не имею!Но я в порядке с тем фактом, что он работает :)

0 голосов
/ 25 апреля 2011

Примерно так может работать:

RewriteCond %{REQUEST_URI} !^/#ajx
RewriteRule ^(.*) http://%{SERVER_NAME}/#ajx$1 [R,L]
...