RewriteRule - 检查URL中是否存在某个Term,如果不存在则

时间:2011-04-25 16:22:11

标签: ajax .htaccess mod-rewrite search-engine

我当前正面临一些htaccess / rewriterule问题。 (我是这个领域的新手)

我们假设我们有一个这样的网址: http://mypage.at/very/cool

URL应该看起来像这样(因为我正在使用需要这个的AJAX-loadedContent): http://mypage.at/#ajx/very/cool

所以我想将“#ajx”部分添加到每个尚未包含它的网址中。 这意味着如果网址看起来像:http://mypage.at/#ajx/so/pretty那么就没有必要进行更改。

由于我不确定这会给GoogleSearchIndex造成麻烦,我还想知道是否有办法排除搜索机器人的这条规则。

感谢您的帮助。 Ripei

3 个答案:

答案 0 :(得分:1)

由于您报告这不起作用(这可能是因为您的Apache版本不支持Perl样式的RegEx):

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

我认为应该这样做:

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

编辑:自己尝试并在互联网上阅读后,我不确定这实际上是否可行。井号(#)不是URL的合法部分。这个答案很接近,但我不得不把这个留给那些知道更多的人来说是否可以按照@Ripei的要求来做。

答案 1 :(得分:0)

这样的事可能有用:

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

答案 2 :(得分:0)

经过多次阅读和测试后,哈哈终于得到了它。

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

本规范对我有用...不要问我为什么这个工作正常,说实话我没有线索!但我很好,因为它正在工作:)