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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Apache 将旧URL重写为漂亮URL,并使用.htaccess将旧URL重定向到新URL_Apache_.htaccess_Mod Rewrite_Url Redirection_Friendly Url - Fatal编程技术网

Apache 将旧URL重写为漂亮URL,并使用.htaccess将旧URL重定向到新URL

Apache 将旧URL重写为漂亮URL,并使用.htaccess将旧URL重定向到新URL,apache,.htaccess,mod-rewrite,url-redirection,friendly-url,Apache,.htaccess,Mod Rewrite,Url Redirection,Friendly Url,我对.htaccess设置有一些问题。 我的网站主页url是:,我使用mod_rewrite创建漂亮的url: 这是我对漂亮URL的重写规则(它有效): 这正是我想要的,但当我将“旧URL”重定向到新URL时,会出现一些问题 我的Chrome浏览器显示“www.domain.com重定向您的次数太多。” 这是我的旧URL重定向到新规则: RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301] 这是一个一般的两部分问题。您需要将原始请求重定向到prettier 1

我对
.htaccess
设置有一些问题。 我的网站主页url是:,我使用
mod_rewrite
创建漂亮的url:

这是我对漂亮URL的重写规则(它有效):

这正是我想要的,但当我将“旧URL”重定向到新URL时,会出现一些问题

我的Chrome浏览器显示“
www.domain.com重定向您的次数太多。

这是我的旧URL重定向到新规则:

RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301]

这是一个一般的两部分问题。您需要将原始请求重定向到prettier 1:

RewriteRule ^en/(.*)$ /b/en/$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^GET\ /b/(en)/(\S*) [NC]
RewriteRule ^b/ /%1/%2 [R=301,L]

在测试新规则之前,一定要清除浏览器的缓存。

我有一个更通用的用例,我不得不稍微修改一下@hjpotter92的解决方案

旧的URL结构:
http://example.com/index.php?page=foo

新的URL结构:
http://example.com/foo

所以我想让URL变得“漂亮”(即SEO友好),但也让旧的(丑陋的)URL重定向到新的URL,这样旧的书签仍然可以工作

以下是我的解决方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/?(.*)$ /index.php?page=$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^GET\ \/?index\.php\?page=(\S*) [NC]
RewriteRule ^index.php /%1? [R=301,L]

不要使用
PT
标志。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/?(.*)$ /index.php?page=$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^GET\ \/?index\.php\?page=(\S*) [NC]
RewriteRule ^index.php /%1? [R=301,L]