使用.htaccess重写ID为“找不到页面”的URL

时间:2016-01-06 00:25:29

标签: php wordpress apache .htaccess mod-rewrite

我试图通过在WordPress环境中使用.htaccess文件来重写一些网址。我有一个名为“offerta”的WordPress页面,其中包含两个参数,其中一个是我用来生成内容的自定义ID。

所以,示例网址为:http://www.riccionelastminute.it/rlm/offerta/?id=15&titolo=my-title

我希望它是:http://www.riccionelastminute.it/rlm/offerta/my-title-15/

这是我现在的.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /rlm/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /rlm/index.php [L]
</IfModule>

# END WordPress

经过一些研究,我尝试在最后一次重写规则之后立即添加此规则,但它重定向到404页面:

RewriteRule ^offerta/([A-Za-z0-9-]+)-([0-9]+)/$ offerta/?id=$2&titolo=$1

我不习惯玩.htaccess,我不是专家。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

问题是最后一个RewriteRuleL标志,这意味着no other rules are applied after it。您需要做的是在最后一个之前添加规则

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /rlm/
RewriteRule ^index\.php$ - [L]

RewriteRule ^offerta/([A-Za-z0-9-]+)-([0-9]+)/$ offerta/?id=$2&titolo=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /rlm/index.php [L]
</IfModule>