如何重写url和重定向与Apache mod重写?

问题描述:

我有网址:如何重写url和重定向与Apache mod重写?

ip地址/ panelname /主/ index.php文件

如何来重建到

ip地址/中心/ index.php文件

of course我们可以看到另一个页面,不仅index.php,而且这个文件夹在url中我们可以永远看到。

我tryed这样做在.htaccess:

RewriteEngine on 
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L] 
RewriteRule ^/panelname(.*)$ /center$1 [QSA,L,R=301,NC] 
Redirect 301 ^/panelname(.*)$ /center$1 

,但我没有看到panelname重定向到中心。 但如果我输入中心一切运作良好的(但我不舒尔,它在我的htaccess或符号连接,这点我是在文件系统创建工作良好)

如何重写所有到另一个链接和HOWTO看重定向从旧的链接到我的新?谢谢。

RewriteRule在目录上下文(即.htaccess是)中,永远不会以斜杠开始,因为公共前缀会先从匹配部分中剥离。

Redirect确实匹配字符串,而不是正则表达式。在正则表达式上工作的变体是RedirectMatch。两者都只能使用绝对URL(以斜线开头)。

你要么必须做到以下几点:

RewriteRule ^panelname(.*)$ /center$1 [R,L] 

或:

RedirectMatch 302 ^/panelname(.*)$ /center$1 

变化[R][R=301]一旦你已经测试一切正常。如果您选择第二个选项,则在测试一切正常后才将302更改为301。

如果你想给访问者显示/center/index.php并保持从旧URL到这个URL的重定向,那么你将需要一个重定向和一个重写规则(你已经拥有)。

RewriteEngine on 

# external redirect from old URL to new one 
RewriteCond %{THE_REQUEST} /panelname/main/(\S+) [NC] 
RewriteRule^/center/%1 [R=302,L] 

# internal forward from new URL to actual one 
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L]