mod_rewrite,在原始URL中加入?

问题描述 投票:1回答:3

好吧,我想模拟YouTube的URL,并将其重定向到我真正的URL。原因是我用了一个随机的字符串来做视频ID的,所以他们是无法猜测的序列。我的链接是这样的

http://www.mysite.com/watch?v=Dxdotx3iT1

并想重定向到

http://www.mysite.com/index.php?page=videos&section=view&v=Dxdotx3iT1

似乎搞不懂model的重写。同时用一个吗,我相信告诉它做一些事情。

任何帮助将是感激的。

php .htaccess mod-rewrite
3个回答
4
投票

你需要调整你的RewriteRule,使用[QSA](查询字符串附加)标志来包含查询字符串。

RewriteRule ^watch$ index.php?page=video&section=view [QSA]

0
投票
RewriteCond %{QUERY_STRING} ^v=(.+)
RewriteRule ^watch /index\.php?page=videos&section=view&v=%1 [QSA,R=301,L]

0
投票

这些答案对我来说都不适用,所以最后我通过试验和错误发现下面的方法对我有效。

让我的URL的RewriteRule是这样的 https:/www.example.comvideowatch?v=UnIq3Id 如下。

RewriteRule ^video\/watch\?*$ index.php?page=video [L,QSA]

我发现,我之前设置的以下规则,让我的URL变成了这个样子 https:/www.example.comvideoUnIq3Id 干扰了我的重定向。

RewriteRule ^/?([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$ index.php?page=$1&v=$2 

简单地将其注释出来就解决了这个问题,如下。

#RewriteRule ^/?([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$ index.php?page=$1&v=$2

让我的URL的RewriteRule是这样的: https:/www.example.comwatch?v=UnIq3Id 是这样的。

RewriteRule ^watch\?*$ index.php?page=video [L,QSA]

我发现,我之前设置的以下规则,让我的URL变成了这个样子 https:/www.example.comvideo 干扰了我的重定向。

RewriteRule ^([A-Za-z0-9_-]+)/?$ index.php?page=$1 [NC]

简单的注释出来就解决了这个问题,如下图。

#RewriteRule ^([A-Za-z0-9_-]+)/?$ index.php?page=$1 [NC]

希望能帮到别人,也省得我头疼,人在这个问题上有时不是那么坦然的 如何写一个htaccess RewriteRule让我的urls像youtube一样工作?.

© www.soinside.com 2019 - 2024. All rights reserved.