.htaccess 用两个变量重写 url

Posted

技术标签:

【中文标题】.htaccess 用两个变量重写 url【英文标题】:.htaccess rewrite url with two variables 【发布时间】:2017-10-01 01:16:39 【问题描述】:

我的.htaccess 重写规则有问题(我是新手,所以这可能很容易)

我的网址是:

http://www.example.com/film-al-cinema/?titolo=Ghost+in+the+Shell&id=315837

所以我在第一个变量titolo="" 中有电影的标题,在第二个变量id="" 中有电影的ID。

我希望网址看起来像

http://www.example.com/film-al-cinema/Ghost+in+the+Shell/315837

我试图用这个来改变 htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^film-al-cinema/(.*)/([0-9]+)$ film-al-cinema/?titolo=$1&id=$2 [R]
</IfModule>

但这会将我重定向到 404 页面

编辑

我正在开发 Wordpress,所以 /film-al-cinema/ 是一个 Wordpress 页面

编辑 2

# BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

RewriteRule ^film-al-cinema/([^/]+)/(\d+)/?$  /index.php?page_id=21016&titolo=$1&id=$2 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress

【问题讨论】:

我觉得电影电影的规则已经改写了 film-al-cinema 不是目录,但它是 wordpress 页面,所以我认为这是可能的? 如果film-al-cinema 不是现有目录,wordpress 如何映射到`websitename.com/film-al-cinema?...`?甚至更好:wordpress 的 index.php 在哪里? wordpress 安装的 .htaccess 中是否还有更多规则? @Quasimodo'sclone 我不明白,抱歉。如果您想查看pulpcorn.com/film-al-cinema/…,这是网址 好的,我把^film-al-cinema/(.*)/([0-9]+)$ 放回去了吗? 【参考方案1】:

试试这个,让我知道它是否适合你(更新),

 RewriteEngine On
 RewriteCond %THE_REQUEST ^GET\ /film-al-cinema\/\?titolo=([^\s&]+)&id=([^\s&]+) [NC]
 RewriteRule ^film-al-cinema\/$ /film-al-cinema/%1/%2? [R,L]
 RewriteRule ^film-al-cinema/([^/]+)/([^/]+)/?$ /film-al-cinema/?titolo=$1&id=$2 [NC,L]

您应该创建当前 .htaccess 文件的备份,然后使用此代码。 如果一切正常,在最后一行添加R=301代替R

【讨论】:

如果我去 http://www.pulpcorn.com/film-al-cinema/Guardiani+della+Galassia+Vol.+2/283995 它对我不起作用,如果我去 http://www.pulpcorn.com/film-al-cinema/?titolo=Guardiani+della+Galassia+Vol.+2&amp;id=283995 它会给我错误 404,它会将我重定向到没有任何变量的电影电影 你添加了一个额外的点Vol.,我必须为此修改我的条件。等等 能否请您告诉我,包括- + . 您的网址中有哪些特殊字符 @alessandroduemetri 我可以看到 URL --> pulpcorn.com/film-al-cinema/… 正在重定向到 pulpcorn.com/film-al-cinema/Ghost+in+the+Shell/315837 在更新当前代码后,一切都会正常工作 @alessandroduemetri 我已经更新了代码,它对我有用,试试吧,让我知道它是否适合你。

以上是关于.htaccess 用两个变量重写 url的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 用 WordPress 插件重写

用 .htaccess 重写不起作用

url重写.htaccess的问题

.htaccess 重写 GET 变量

.htaccess 重写仍然可以使用 get 变量的漂亮 url

使用 .htaccess 将变量重写到目录