与RewriteRule完全匹配,没有正则表达式

Xen*_*nos 3 regex apache .htaccess mod-rewrite

我有以下htacces来重写一个精确的URL(views/index.php到views/index.xml):

RewriteEngine On
RewriteRule ^/views/index\.php$ /views/index.xml [L]
Run Code Online (Sandbox Code Playgroud)

这很容易忘记\和输入^/views/index.php$,允许/ views/indexXphp/ views/index/php而不是仅仅/views/index.php.

使用完全匹配而不是正则表达式对于我的情况来说是好的,所以这将是一种告诉Apache 对于此RewriteRule下面的所有RewriteRules的方法,点表示a.没有任何字符,所以点不会被转义.

那么,有没有办法让完全匹配/views/index.php而不需要逃避点?

anu*_*ava 7

正如Amal在下面评论你的问题,正则表达式中的点表示任何字符,因为RewriteRule使用正则表达式的URI模式,因此你需要转义点以使其与文字点匹配.

但是在mod_rewrite规则中有一些方法可以RewriteCond让你在匹配patten之前使用符号来使它与没有正则表达式的文字字符串=匹配:

以下是您翻译的规则的示例:

RewriteCond %{REQUEST_URI} =/views/index.php
RewriteRule ^ /views/index.xml [L]
Run Code Online (Sandbox Code Playgroud)