![](/img/trans.png)
[英]htacess mod_rewrite regex - include numbers but exclude letters
[英].htacess mod_rewrite slim routing
我有两种路线。
这有效:
http://localhost/monitor/test1
这不会:
http://localhost/monitor/test2/test3
这是我目前的规则:
RewriteRule (^[^/]*$) public/$1 [L]
我知道这个只匹配最后一个斜杠。 如何更改正则表达式以匹配这两种情况?
第一个解决方案:请您尝试以下操作。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/monitor[^/]*/(.*)$
RewriteRule ^.*$ /public/%1 [NC,L]
或者,如果您在REQUEST_URI
起始部分可以有除monitor
之外的任何其他字符串,请尝试以下操作。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/[^/]*/(.*)$
RewriteRule ^.*$ /public/%1 [NC,L]
第二个解决方案:或者我们可以在编写RewriteRule
本身时捕获值,并且可以减少 1 个RewriteCond
在这里第一个解决方案中使用。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^/]*/(.*)$ /public/$1 [NC,L]
或使用monitor
匹配关键字:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^monitor[^/]*/(.*)$ /public/$1 [NC,L]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.