我正在制作一个 CMS,并尝试将帖子链接转换为漂亮的链接,如下所示:
原文链接:
http://localhost/index.php?id=13&category=Uncategorized&title=just-a-link
转换后的链接:
http://localhost/13/Uncategorized/just-a-test
我在 Linux Mint 上使用 Apache2,我的网站位于:
var/www/html
我使用 mod_rewrite 加载sudo a2enmod rewrite
然后重新启动 apache2。
我的 apache2 配置文件/etc/apache2/apache2.conf
在里面我有:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride All
# Require all granted
#</Directory>
这是我的 .htaccess 文件,位于var/www/html/.htaccess
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /single.php?id=$1&category=$2&title=$3 [L]
我也重新启动了 apache2 几次,但就是不起作用。
这是从 phpinfo 加载的模块,(您可以看到 mod_rewrite 已加载)(请查看下面的两张图片来了解我遇到的问题)
core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_mime prefork mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status
如果我直接从 url 中获取 $_GET 值而不使用 mod rewrite,它可以工作,但使用漂亮的 url,我就无法再获取 $_GET 值。
答案1
这不是 Apache 的问题。您需要从查询字符串中删除“p”标签。
答案2
将标签放在查询字符串中是没有意义的,您应该删除它们并将它们放在模板中,或者在创建 url 时对它们进行 urlencode。
$returnValue = urlencode('<p>another test</p>');
结果是“%3Cp%3Eanother+test%3C%2Fp%3E”,因此您可以尝试http://localhost/index.php?id=13&category=Uncategorized&title=%3Cp%3Eanother+test%3C%2Fp%3E