Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Mod_rewrite.htm到伪子目录_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache Mod_rewrite.htm到伪子目录

Apache Mod_rewrite.htm到伪子目录,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个CMS网站,它使用mod_rewrite使URL看起来更干净。以前,干净的URL有扩展名.htm,但我想将其转换为假子目录,即: http://www.example.com/pagename/ 我有两个重写规则来重写旧方案和潜在的新方案: RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+).htm$ index.php?page=$1 [QSA] RewriteCond %{REQUEST_FILENAME} !-d Rewr

我有一个CMS网站,它使用mod_rewrite使URL看起来更干净。以前,干净的URL有扩展名.htm,但我想将其转换为假子目录,即:

http://www.example.com/pagename/
我有两个重写规则来重写旧方案和潜在的新方案:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]
我的问题是,我试图使用的将旧URL重定向到新URL的规则没有任何作用

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA]

不能对同一模式使用两个规则,因为将只应用其中的第一个规则。尝试用新的“重定向”规则替换“重写”规则,以重定向旧URL,而不是仅重写:

# redirect foo.htm to foo/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.htm$ $1/ [R=301,NC]
# rewrite foo/ to index.php?page=foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]

谢谢对于记录,我使用的规则是:RewriteRule^(+)\.htm$[R,NC,QSA]