Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Regex .htaccess是否在替换单词后重定向?_Regex_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Regex .htaccess是否在替换单词后重定向?

Regex .htaccess是否在替换单词后重定向?,regex,.htaccess,mod-rewrite,redirect,Regex,.htaccess,Mod Rewrite,Redirect,我需要使用.htaccess文件替换URL中的单词;大概是这样的: 示例URL: http://example.com/oldword/test-page.html 重定向到: http://example.com/newword/test-page.html 替换单词后,如何使用mod_rewrite将包含/oldword/的每个URL重定向到同一URL?这应该可以为您做到: RewriteRule ^oldword/(.*) /newword/$1 [L] 编辑:根据您的R

我需要使用.htaccess文件替换URL中的单词;大概是这样的:

示例URL:

 http://example.com/oldword/test-page.html
重定向到:

 http://example.com/newword/test-page.html

替换单词后,如何使用mod_rewrite将包含/oldword/的每个URL重定向到同一URL?

这应该可以为您做到:

RewriteRule ^oldword/(.*)   /newword/$1   [L]
编辑:根据您的RewriteBase设置,它可能无法正常工作,但会很接近

第二次编辑:如果您需要一个与旧URL关联的永久移动的301头,您也可以这样做:

RewriteRule ^oldword/(.*)   /newword/$1   [R=301,L]
请看这里:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^oldword(.*)$ http://%{HTTP_HOST}/newword$1 [L]
</IfModule>

重新启动发动机
重写基/
重写规则^oldword(.*)$http://%{http_HOST}/newword$1[L]
再见


Chris

通过这种方式,您可以独立于要替换的“旧单词”周围的内容重定向:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /

   # Replace 'oldword' with 'newword' and 301 redirect 
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)oldword(.*)$ /$1newword$2 [L,R=301]
</IfModule>

重新启动发动机
重写基/
#将“oldword”替换为“newword”并重定向
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)旧单词(.*)$/$1新单词$2[L,R=301]

最好像zombat那样将协议、主机和端口部分保留在一旁。此外,您的规则还将把
/oldword和更多的
重定向到
/newword和更多的
,我认为这不是chiaf想要的。