一尘不染

通过index.php重新路由所有php请求

php

如何通过index.php重新路由所有对php页面的请求?

我的.htaccess如下:

Options +FollowSymLinks
IndexIgnore */*
#Turn on the RewriteEngine
RewriteEngine On
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !.*\.(js|ico|gif|jpg|png|css|pdf)$ index.php%{REQUEST_URI} [L]

基本上,我试图模仿.NET母版页。index.php具有站点页眉/页脚。

它将404重定向到index.php。我如何使其将所有请求重定向到php页面(index.php本身除外)?

此方法是否存在任何性能问题(不想使用框架)?


阅读 502

收藏
2020-05-29

共1个答案

一尘不染

这是我使用的(并且已经使用了很长时间):

<IfModule mod_rewrite.c>
    # Redirect /index.php to / (optional, but recommended I guess)
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php
    RewriteRule ^index.php/?(.*)$ $1 [R=301,L]

    # Run everything else but real files through index.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1?%{QUERY_STRING} [L]
</IfModule>

正如评论所建议的那样,它将把不是实际文件的每个请求都路由到index.php

2020-05-29