配置 apache 通过单个 index.php 处理所有请求

配置 apache 通过单个 index.php 处理所有请求

我继承了一段丑陋的 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 传递图像和样式表。

相关内容