如果网址包含单词" 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
除外)
答案 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,则第一行需要更改。根据您在同一问题上的其他帖子,在这里猜一点。