.htaccess如果网址包含"博客",则执行规则

时间:2017-02-19 04:48:01

标签: apache .htaccess

如果网址包含单词" blog",则应在.htaccess中执行以下块

RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

我尝试在顶部添加RewriteCond %{REQUEST_URI} ^/blog,但是失败了。

PS:

我添加了

RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$ [NC]
RewriteRule ^([^/]*)$ /%1/$1? [R=301,L]

RewriteCond %{REQUEST_URI} !^/(js)/
RewriteRule ^([a-z]{2})(?:/([^/]+))?$ $2?lang=$1 [NC,L,QSA,E=rewritten:1]

例如,当您转到example.com/fr时,example.com/index.php?lang=fr的行为就像example.com/js...一样(除非规则中写的IEnumerable.FirstOrDefault除外)

1 个答案:

答案 0 :(得分:1)

没有必要在顶部添加它。 RewriteConds仅适用于以下RewriteRule。你可以这样做:

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} ^/blog(?:/|$)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

我选择了第一条RewriteBase行,因为它仅适用于您在此处未使用的相对替换。

看起来这个设置在/blog/目录中的.htaccess文件中,在这种情况下,无论如何都不需要我添加的内容。如果您将其移至root,则第一行需要更改。根据您在同一问题上的其他帖子,在这里猜一点。