htaccess 重写规则对特定 PHP 页面不起作用

htaccess 重写规则对特定 PHP 页面不起作用

我的文件中有以下代码.htaccess,放在我的根目录中Ubuntu 22.04实例:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([^/]*)$ /profile.php?user=$1 [L]

我的目标是使用:

example.com/profile/johndoe

获得以下输出 URL:

example.com/profile.php?user=johndoe

但它不起作用:(

mod_rewrite正在

我的apache2.conf样子是这样的:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/html/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

我不知道我做错了什么,任何帮助都将不胜感激

答案1

您可以尝试将.htaccess文件放入/var/www/html/。您的问题可能与权限有关。检查您的日志/var/log/apache2/access.log/var/log/apache2/error.log以了解更多详细信息。

另外,不允许访问根文件系统,这是一个安全问题。因此更改

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory />
    Options FollowSymLinks
    Require all denied
</Directory>

相关内容