Php htaccess重写和重定向URL
我正在寻找一个htaccess规则,可以做到这一点: 原始URL:Php htaccess重写和重定向URL,php,.htaccess,mod-rewrite,redirect,Php,.htaccess,Mod Rewrite,Redirect,我正在寻找一个htaccess规则,可以做到这一点: 原始URL:?til=main 替换为:/main 如果是这样的话: 原始URL:/index.php?til=main或?til=main 重定向到:/main 到目前为止,我只有以下代码: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?til=$1 [L,QSA] 它加载/main,
?til=main
替换为:/main
如果是这样的话:
原始URL:/index.php?til=main
或?til=main
重定向到:/main
到目前为止,我只有以下代码:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?til=$1 [L,QSA]
它加载/main
,但在它后面加载/index.php?til=main
试试:
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+(?:index\.php|)\?til=([^&\ ]+)
RewriteRule ^ /%1? [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?til=$1 [L,QSA]
尝试:
这应该起作用:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /\?til=(.*)\ HTTP [OR]
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?til=(.*)\ HTTP
RewriteRule ^ /%2? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?til=$1 [L]
它应该将index.php?til=main
和?til=main
重定向到/main
,这样应该可以:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /\?til=(.*)\ HTTP [OR]
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?til=(.*)\ HTTP
RewriteRule ^ /%2? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?til=$1 [L]
它应该将
index.php?til=main
和?til=main
重定向到/main
如果我转到index.php?til=main或?til,它不会重定向=main@JonLin谢谢你的截图:如果我转到index.php?til=main或?til,Dit不会重定向=main@JonLin感谢您提供的屏幕截图:DHO如何替换til=main以获得类似的功能直到=%1??是的,它可以工作。。。快速问题如果我这样使用它有什么问题吗:RewriteCond%{THE_REQUEST}^[A-Z]{3,9}\/(*)til=([^&\]+)\HTTP RewriteRule^/folder/%2?[R=301,L]
它似乎可以很好地处理index.php?til=xxxx和?til=xxxx@Ered(.*)
它匹配在第一个捕获组中出现零次或多次的任何字符(断行除外)(您可以使用$1
引用)。而后面的([^&\]+)
在引用$2
的第二个捕获组中匹配除&、\和空格之外的任何字符,这些字符在第二个捕获组中有一个或多个时间。我如何将til=main替换为til=%1?是的,它可以工作。。。快速问题如果我这样使用它有什么问题吗:RewriteCond%{THE_REQUEST}^[A-Z]{3,9}\/(*)til=([^&\]+)\HTTP RewriteRule^/folder/%2?[R=301,L]
它似乎可以很好地处理index.php?til=xxxx和?til=xxxx@Ered(.*)
它匹配在第一个捕获组中出现零次或多次的任何字符(断行除外)(您可以使用$1
引用)。而后一个([^&\]+)
匹配除&、\和空格以外的任何字符,在第二个捕获组中有一个或多个时间,该组引用了$2
。