我想我之前从未问过这样的问题,我知道我应该阅读手册,所以我做了,但我根本无法做到这一点。
我需要一个重写规则来摆脱这个:
https://www.proevisa.com/ar/idea.php?permalink=proevisa/is-it-safe-to-provide-my-personal-and-finance-information-online
到此:
https://www.proevisa.com/ar/proevisa/is-it-safe-to-provide-my-personal-and-finance-information-online
我还不明白我是否应该更新网站上的链接,因为他们指的是原始网址而不是漂亮网址。
有人可以帮我一点吗?
非常感谢, 克里斯
答案 0 :(得分:0)
如果没有涉及查询字符串,可以使用RedirectMatch
(不确定为什么忽略那部分网址,或者我错了)。
无论如何,用mod_rewrite试试这个:
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} ^/ar/idea\.php\?permalink=(.*?)$
RewriteRule . /ar/%1? [R=301]
这假设存在RewriteEngine On
指令,并且没有其他mod_rewrite规则可以混合(如果存在,请考虑使用L
标志或重新排列规则)。
%1
在permalink=
之后引用正则表达式“组”的内容。 ?
之后它告诉我们从结果中省略旧的查询字符串。 R=301
是永久重定向。
当然,更新网站上的链接,在旧链接从索引和书签中消失后,删除规则,因为它们将变得无关紧要。
答案 1 :(得分:0)
所以我终于找到了更多基于PHP的解决方案,因为我的mod_rewrite技能并不是很好。这就是我所做的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /proevisa/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /proevisa/ar/idea.php?r=$1
</IfModule>
是的,它基于Wordpress重写结构。它的作用基本上如下:
Idea.php执行以下操作:
//recibimos la información del usuario
$idea->base_dir = "/proevisa/ar";
$idea->permalink = addslashes($_SERVER['REQUEST_URI']);
$idea->permalink = str_replace($idea->base_dir, "", $idea->permalink);
然后我们查询数据库以查看是否有任何文章与$ _SERVER ['REQUEST_URI']相匹配。
这不是我所描述的问题的具体解决方案,但它可以很好地处理几乎每个使用PHP的案例,好像它没有找到你可以很容易地重定向到PHP,甚至你可以使用LIKE查询,并显示类似的结果......
希望它有所帮助! 克里斯;