难以进行简单的mod重写。经过无数次尝试,我不知道自己做错了什么。
试图做到这一点:
www.example.com/speaker-lineup-new.php?link=speaker-name
看起来像这样:
www.example.com/speaker-lineup-new/speaker-name
这是我到目前为止所做的:
RewriteEngine On
RewriteRule ^(.*)$ speaker-lineup-new.php?link=$1 [NC]
上述结果导致所有网站的网页都存在相对路径错误。
我正在使用^(.*)
,因为我希望它能够接受任何角色。
THE FIX
这是我在apache中启用.htaccess的方式的问题。在我的vHost文件中,我有:
<Directory /var/www/html/www.example.com/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
我需要的是:
<Directory /var/www/html/www.example.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
答案 0 :(得分:1)
您可以使用以下规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([\w-]+)/([\w-]+)/?$ $1.php?link=$2 [L,QSA]
答案 1 :(得分:1)
试试这个:
RewriteEngine On
RewriteRule ^speaker-lineup-new/(.*) speaker-lineup-new.php?link=$1 [NC]
某些apache配置会在此类地址中添加尾部斜杠 - 在这种情况下,您也应该添加它。