1 回答
TA贡献1815条经验 获得超13个赞
让我们了解RewriteRule
指令,它是真正的重写主力。
ARewriteRule
由三个用空格分隔的参数组成。论据是
模式:哪些传入的 URL 应该受规则影响;
替换:匹配的请求应该发送到哪里;
[flags]:影响重写请求的选项。
让我们从以下代码段开始:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
第一行代码,描述RewriteEngine
是打开的。在这里,我使用RewriteCond
定义重写规则条件的指令。使用RewriteCond
指令我们在这里定义了两个条件。该指令采用了一个名为REQUEST_FILENAME
. 上面的两个条件判断请求是不是文件还是目录,则满足RewriteRule
. 查看有关此问题的 更多详细信息。
现在是时候编写一些重写规则了。让我们转换
www.example.com/?pr=project-abc123
// to
www.example.com/project-abc123
重写规则将是:
RewriteRule ^(.*)$ index.php/?pr=$1 [L]
为了得到www.example.com/pr/project-abc123我们需要如下规则:
RewriteRule ^/?([a-z]+)/(.*)$ index.php/?$1=$2 [L]
// or
RewriteRule ^/?pr/(.*)$ index.php/?pr=$1 [L]
[L] 标志告诉 mod_rewrite 停止处理规则集。这意味着如果规则匹配,则不会处理进一步的规则。
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报