Php 如何将旧URL重定向到URL,但同时重定向到URL';虽然有漂亮的URL';s

Php 如何将旧URL重定向到URL,但同时重定向到URL';虽然有漂亮的URL';s,php,.htaccess,url-rewriting,Php,.htaccess,Url Rewriting,这是我的旧网址 http://localhost/site/viewactors.php?name=G%20Eazy%20ft%20Blac%20Youngsta%20and%20BlocBoy%20JB%20Drop 但新的url将如下所示: http://localhost/site/viewactors/G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Drop 使用.htaccess如何将新url重定向到与查询相同的正确viewactors页面,但如果有人

这是我的旧网址

http://localhost/site/viewactors.php?name=G%20Eazy%20ft%20Blac%20Youngsta%20and%20BlocBoy%20JB%20Drop
但新的url将如下所示:

http://localhost/site/viewactors/G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Drop
使用
.htaccess
如何将新url重定向到与查询相同的正确viewactors页面,但如果有人访问旧url,它仍然可以工作

这就是我目前拥有的

RewriteCond %{viewactors}.php -f
RewriteRule !.*\.php$ %{viewactors}.php [QSA,L]
RewriteRule ^([-\w]+)$ /viewactors.php?p=$1 [NC,L]

试试这个,希望它能解决您的问题:)

试试下面的规则

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^viewactors/(.*)$ viewactors.php?name=$1 [NC,L]

像这样修改
.htaccess
代码

RewriteEngine on
RewriteRule ^([a-zA-Z0-9-/]+)$ viewactors.php?name=$1
从下面的url

http://localhost/site/viewactors/G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Drop
现在您可以像这样获得
G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Drop
值(在
viewactors.php
文件中)

请尝试以下代码:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^(.*)/ /$1.php [QSA,L]
RewriteRule    ^viewactors/([A-Za-z0-9-]+)/?$    /viewactors.php?name=$1 [QSA,L]
在viewactors.php页面中,您可以将以下代码放在页面顶部,以检索名称:

$param = explode("/",str_replace("'", "''", $_SERVER['REQUEST_URI']));
if(isset($param[count($param) - 1]) && $param[count($param) - 1] != ""){
    $name = $param[count($param) - 1];
    echo "Viewactor name = " . $name;
}

好吧,我发现这对我来说很有用: 重新启动发动机 重写规则^viewactors.php/([-a-zA-Z0-9_quo;]+)/?php?&name=$1[L]

我得到的URL如下所示:

http://localhost/site/viewactors/G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Drop

而且旧的URL仍然有效

你的问题是什么?我不确定你是否读过这个问题。解释为什么要使用show.php?slug=?我从一个.htaccess.复制了上面的一个,这就是为什么它是show.php。换了。再次查看此选项不拾取查询字符串,因为它返回null/viewcactors/G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-drop您的
.htaccess
文件存放在哪里?它应该在
site
文件夹中。是的,它在site文件夹中,只是似乎无法通过查询。当您在前面添加问号时,它会拾取查询字符串,如下所示:?G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-drop要使其工作,我需要添加一个?在名称前面,如viewactors/?G-Eazy-ft-Blac-Youngsta-and-BlocBoy-JB-Dropuse
如果您想要可选的尾随斜杠,请使用类似的内容
重写规则^viewactors/(*)/?$
$param = explode("/",str_replace("'", "''", $_SERVER['REQUEST_URI']));
if(isset($param[count($param) - 1]) && $param[count($param) - 1] != ""){
    $name = $param[count($param) - 1];
    echo "Viewactor name = " . $name;
}