我继承了一段丑陋的 php 代码,它必须通过单个 index.php 处理所有请求。
index.php 根据所指向的 URL,使用带有嵌入式业务逻辑的 smarty 生成不同的网页。
如何配置 apache2/php5 来通过 index.php 处理所有请求?
更新:这里有没有可以替代 mod-rewrite 的方法?
答案1
好的,当然,没有mod_rewrite
.mod_rewrite
就是答案,但是这使用了mod_alias
:
RedirectMatch permanent ^/(?<!index\.php)(.*) http://example.com/index.php
这应该匹配前面没有的内容index.php
,并发出永久重定向到正确的 index.php。请注意,您需要指定完整位置作为目标。
更新 我已经测试了上述内容,它需要 Apache 2.0+,因为它使用 PCRE。如果您需要将实际路径附加到index.php
,则将其附加$1
到重定向路径。
答案2
LoadModule rewrite_module /usr/lib/apache/modules/mod_rewrite.so
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/?index.php$
RewriteRule . index.php
答案3
将以下内容保存到名为.htaccess在你的网络根目录中。
# Turn on URL rewriting
RewriteEngine On
# Web Directory
RewriteBase /
# Protect certain folders from being viewed
RewriteRule ^(protected|directories) - [F,L]
# Rewrite URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]
答案4
这是我安装的 Wordpress 的工作原理:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
两条 RewriteCond 线允许提供现有文件:如果没有它们,您还必须通过 index.php 传递图像和样式表。