在Apache下配置ThinkPHP URL重写,需要进行以下步骤:
确保Apache已经开启了mod_rewrite模块,可以通过在终端运行以下命令进行检查:
sudo a2enmod rewrite
在Apache配置文件中修改AllowOverride选项,允许.htaccess文件中的重写规则生效。找到并编辑 /etc/apache2/apache2.conf
文件,在 <Directory /var/www/>
标签中将 AllowOverride
选项设为 All
:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
在项目根目录下创建.htaccess文件,并添加以下代码:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# 如果请求的文件或目录存在,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将所有请求都重定向到index.php入口文件
RewriteRule ^(.*)$ index.php/$1 [L]
以上代码会将所有请求都重定向到index.php入口文件,并将请求的URL作为参数传递给入口文件。其中 RewriteBase /
表示重写规则的基础路径为根路径。
修改项目配置文件 config.php
中的URL模式,将其设置为PATHINFO模式:
'URL_MODEL' => 1,
PATHINFO模式会将URL中的参数部分作为PATHINFO参数传递给入口文件,例如 http://example.com/index.php/Home/Index/index/id/1
可以通过 $_GET['id']
获取到参数值。
完成以上步骤后,即可在Apache下成功配置ThinkPHP URL重写。请注意,以上操作可能会影响到其他应用程序的URL重写,请谨慎操作。