Regex htaccess重写问题-继续重写

Regex htaccess重写问题-继续重写,regex,apache,.htaccess,mod-rewrite,url-rewriting,Regex,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在一个域上进行一些重写实验。htaccess当前设置为考虑正斜杠后的内容。如。 mysite.dev/page1/ 我希望将此更改为: mysite.dev/page1.html 因此,我在原始链接上提出了一个建议,并为.html页面设置了新的重写,如下所示: Redirect 301 /page1/ http://mysite.dev/page1.html Redirect 301 /page1 http://mysite.dev/page1.html Redirect 301 /page

我正在一个域上进行一些重写实验。htaccess当前设置为考虑正斜杠后的内容。如。 mysite.dev/page1/

我希望将此更改为: mysite.dev/page1.html

因此,我在原始链接上提出了一个建议,并为.html页面设置了新的重写,如下所示:

Redirect 301 /page1/ http://mysite.dev/page1.html
Redirect 301 /page1 http://mysite.dev/page1.html
Redirect 301 /page2/ http://mysite.dev/page2.html
Redirect 301 /page2 http://mysite.dev/page2.html
Redirect 301 /page3/ http://mysite.dev/page3.html
Redirect 301 /page3 http://mysite.dev/page3.html

RewriteRule ^page1.html$ page.php?slug=page1 [L]
RewriteRule ^page2.html$ page.php?slug=page2 [L]
RewriteRule ^page3.html$ page.php?slug=page3 [L]

RewriteRule ^([^/.]+)/?$ page.php?slug=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ page.php?slug=$2 [L]
当转到mysite.dev/page1.html时,它工作正常。但是当放置mysite.dev/page1/时,它将重写为mysite.dev/page1.html?slug=page1。因此,它似乎继续遵循其余的规则

对此有何帮助/建议


谢谢。

避免混淆mod\u别名和mod\u重写规则

在第一次重写规则之前添加此规则,以避免循环:

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]
完成。htaccess:
避免混合使用mod_别名和mod_重写规则

在第一次重写规则之前添加此规则,以避免循环:

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]
完成。htaccess:
谢谢尽管如此,它似乎仍然完全一样。正如我建议的,将所有mod_别名规则转换为mod_rewrite规则,这些规则将使用正则表达式来匹配确切的URI。我已经编辑了答案,以显示带有mod_rewrite规则的完整.htaccess代码。看看,谢谢。我就快到了,回来后注意到你更新了帖子。工作是一种享受。谢谢。不客气,很高兴你能成功。我之前使用手机,因此无法编辑答案。谢谢。尽管如此,它似乎仍然完全一样。正如我建议的,将所有mod_别名规则转换为mod_rewrite规则,这些规则将使用正则表达式来匹配确切的URI。我已经编辑了答案,以显示带有mod_rewrite规则的完整.htaccess代码。看看,谢谢。我就快到了,回来后注意到你更新了帖子。工作是一种享受。谢谢。不客气,很高兴你能成功。我之前在手机上,所以无法编辑答案。