jmu*_*llo 9 php mod-rewrite mvc apache-2.2
网址采用这些形式的 MVC 系统如何通过单个 index.php 文件强制所有请求?
http://www.example.com/foo/bar/baz
http://www.example.com/goo/car/caz/SEO-friendly-name-of-the-object
http://www.example.com/hey/you
Run Code Online (Sandbox Code Playgroud)
编辑:当我尝试下面的重写规则时,出现此错误:
[error] [client 127.0.0.1] Invalid URI in request GET / HTTP/1.1
[error] [client 127.0.0.1] Invalid URI in request GET /abc HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
编辑:哦,这是/index.php 的完整内容。当我删除重写规则时,它会输出 '/' 或 '/index.php' 或者我得到 404 其他任何东西。
<?php
echo htmlspecialchars($_SERVER['REQUEST_URI']);
?>
Run Code Online (Sandbox Code Playgroud)
已解决:我在重写规则中的 index.php 前面添加了一个 / ,然后它起作用了:
再次解决:结果 / 只需要,因为我运行的是 2.2.4。当我升级到 2.2.11 时,不再需要 /。
Man*_*aux 12
如果您使用的是 Apache,请通过mod_rewrite
以下方式使用重写:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
这会将您的 URL 透明地重写为 »index.php?q=foo/bar/baz«。
2. 和 3. 行告诉重写引擎不要重写指向现有文件或目录的 URL。这是访问 httpd 服务器提供的真实文件所必需的。
归档时间: |
|
查看次数: |
12477 次 |
最近记录: |