Mod Rewrite用于单个url参数

时间:2017-03-21 20:25:51

标签: .htaccess mod-rewrite

难以进行简单的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>

2 个答案:

答案 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配置会在此类地址中添加尾部斜杠 - 在这种情况下,您也应该添加它。