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而不需要逃避点?
正如Amal在下面评论你的问题,正则表达式中的点表示任何字符,因为RewriteRule
使用正则表达式的URI模式,因此你需要转义点以使其与文字点匹配.
但是在mod_rewrite
规则中有一些方法可以RewriteCond
让你在匹配patten之前使用符号来使它与没有正则表达式的文字字符串=
匹配:
以下是您翻译的规则的示例:
RewriteCond %{REQUEST_URI} =/views/index.php
RewriteRule ^ /views/index.xml [L]
Run Code Online (Sandbox Code Playgroud)