Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 动态目标url htaccess url重写_.htaccess_Url_Mod Rewrite_Redirect - Fatal编程技术网

.htaccess 动态目标url htaccess url重写

.htaccess 动态目标url htaccess url重写,.htaccess,url,mod-rewrite,redirect,.htaccess,Url,Mod Rewrite,Redirect,我用这个重写 RewriteRule ^main/subold/(.*)$ /main/subnew-monthname/$1 [R=301,NC,L] 将domain/main/subld/whatever.php重定向到domain/main/subnew monthname/whatever.php 我每个月都要更改subnew monthname文件夹的monthname部分。当然,我可以在htaccess中每月更改一次,这样带有subld的url将重定向到带有subnew month

我用这个重写

RewriteRule ^main/subold/(.*)$ /main/subnew-monthname/$1 [R=301,NC,L]
将domain/main/subld/whatever.php重定向到domain/main/subnew monthname/whatever.php

我每个月都要更改subnew monthname文件夹的monthname部分。当然,我可以在htaccess中每月更改一次,这样带有subld的url将重定向到带有subnew monthname的url,但我想知道是否有可能使monthname部分成为动态的,这样它只搜索月名或月号,而不必不断更改htaccess中的规则

有什么建议吗?

在main/subld/中,使用以下mod_重写规则创建一个.htaccess文件:

然后,在main/subld/中,使用以下脚本创建rewrites.php文件:

$requestedURI = $_SERVER['REQUEST_URI'];
$whatever = str_replace('/main/subold/rewrites.php?page=','',$requestedURI);
$currentMonth = strtolower(date("F"));
$redirectedURI = '/main/subnew-'.$currentMonth.'/'.$whatever;

header("HTTP/1.1 301 Moved Permanently");
header('Location: '.$redirectedURI);

我的另一个答案是有效的,可能适用于其他场景,但我刚刚发现了RewriteCond时间和日期变量,因此下面的答案可能正是您想要的:

在main/subold/中,使用以下mod_重写规则创建一个.htaccess文件:

$requestedURI = $_SERVER['REQUEST_URI'];
$whatever = str_replace('/main/subold/rewrites.php?page=','',$requestedURI);
$currentMonth = strtolower(date("F"));
$redirectedURI = '/main/subnew-'.$currentMonth.'/'.$whatever;

header("HTTP/1.1 301 Moved Permanently");
header('Location: '.$redirectedURI);
RewriteEngine on

RewriteCond %{TIME_MON} 01
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-january/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 02
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-february/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 03
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-march/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 04
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-april/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 05
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-may/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 06
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-june/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 07
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-july/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 08
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-august/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 09
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-september/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 10
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-october/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 11
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-november/$1 [R=301,NC,L]

RewriteCond %{TIME_MON} 12
RewriteRule (.*)$ http://%{HTTP_HOST}/main/subnew-december/$1 [R=301,NC,L]