我在根目录中有一个.htaccess,其内容为:
<IfModule mod_rewrite.c>
RewriteEngine on
#RewriteCond %{HTTP_HOST} ^domain.com
#RewriteRule (.*) http://www.domain.com$1 [R=301,L]
</IfModule>
如果我转到http://domain.com/subdir,则会重写为http://www.domain.com/subdir。
但是我的一个名为“crm”的子目录存在问题 - 如果我转到http://domain.com/crm,我会将我重定向到http://www.domain.com而不是http://www.domain.com/crm。
在这个“crm”子目录中,我有另一个.htaccess文件,它将.php扩展名重写为.html。这是代码:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
RewriteRule ^(.*).html$ index.php?name=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
</IfModule>
有人可以告诉我如何才能完成这项工作?因此,当我转到http://domain.com/crm时,它会将我重定向到http://www.domain.com/crm。
编辑:
Root .htaccess还可以,我正在更改内容并忘记删除stackoverflow的注释。
crm / .htaccess现在是:
RewriteEngine on
RewriteOptions Inherit
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
RewriteRule ^(.*).html$ index.php?name=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L]
但它仍然没有将此子目录重定向到www.domain.com/crm但仅限于www.domain.com :(
答案 0 :(得分:1)
首先将根.htaccess
更改为:(目前似乎已被评论)
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
然后在crm / .htacess中,在RewriteEngine on
下面添加这一行:
RewriteOptions Inherit
更新:您的crm/.htaccess
有问题。用以下代码替换该内容:
RewriteEngine on
RewriteOptions Inherit
RewriteRule ^([^/]*)/([^/]*)\.html$ ?name=$1&id=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)\.html$ index.php?name=$1 [QSA,L]
一旦此代码出现重定向将按预期发生。