regex - .htaccess mod_rewrite 超薄路由

标签 regex .htaccess url mod-rewrite slim

我有两种路线。

这个有效:

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]

关于regex - .htaccess mod_rewrite 超薄路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64504651/

相关文章:

.htaccess - 通过 htaccess 阻止一个特定的 URL

.htaccess - 一个.htaccess文件中有许多RewriteBase?

python - 替换python中的特定字符串

c# - 如何计算字符串中特定字符的集合

regex - 匹配包含特定词的 URL

sql - 数据库 URI 或 URL?

python - 如何在不使用 facebook sdk 而仅通过 POST 到 URL 的情况下将照片发布到 facebook ..?

Javascript正则表达式-包含列表中任意顺序的单词和单词

.htaccess - RewriteEngine On 重复几次

PHP 从 URL 获取结果