Php [mod_rewrite]:重定向问题
我在重写URL时遇到问题。我为自己编写了一个小框架,因为我的项目不需要一个包含大量内容的完整框架。我定义了zend框架的一般行为: 重写的url:域/控制器/操作 实际路径:domain/index.php?ctrl=controller&act=action 应显示控制器和操作,而不是$\u GET named key。在控制器和操作之后,如果我添加了无限多的附加参数,则应将其添加为键/值,如下所示: 域/控制器/操作/键/值/键2/值2/键3/值3 这是我的.htaccess:Php [mod_rewrite]:重定向问题,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我在重写URL时遇到问题。我为自己编写了一个小框架,因为我的项目不需要一个包含大量内容的完整框架。我定义了zend框架的一般行为: 重写的url:域/控制器/操作 实际路径:domain/index.php?ctrl=controller&act=action 应显示控制器和操作,而不是$\u GET named key。在控制器和操作之后,如果我添加了无限多的附加参数,则应将其添加为键/值,如下所示: 域/控制器/操作/键/值/键2/值2/键3/值3 这是我的.htaccess: Rewrit
RewriteEngine On
RewriteBase /
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12&$13=$14 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act=$2&$3=$4&$5=$6&$7=$8&$9=$10&$11=$12 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act=$2&$3=$4&$5=$6&$7=$8&$9=$10 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act=$2&$3=$4&$5=$6&$7=$8 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act2=$2&$3=$4&$5=$6 [L]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?ctrl=$1&act=$2&$3=$4 [L]
RewriteRule ^([\w-]+)+/([\w-]+)?$ index.php?ctrl=$1&act=$2 [L]
RewriteRule ^([\w-]+)+/?$ index.php?ctrl=$1 [L]
只能使用控制器和操作调用该页。如果其中一个丢失,用户将被重定向。我为此设置了标题:
// Redirects
if (!isset($_GET) || !isset($_GET['ctrl'])) {
header('location: /index/index/');
}
if (!isset($_GET['act']) || (isset($_GET['act']) && empty($_GET['act']))) {
header("location: /".$_GET['ctrl']."/index/");
}
我知道它很脏。一般来说,它是有效的,但有一些问题我无法解决:
Tyr我想你忘了这个:
rewritecond %{http_host} ^yoururl.com/ [nc]
rewriterule ^(.*)$ http://yoururl.com/$1 [r=301,nc]
此代码需要在以下条件下运行:
RewriteBase /
呃,请在你的PHP代码中解析URL,并简单地将所有请求转发到你的PHP文件,而不是使用这样丑陋的URL…此外,简单地将查询字符串参数(包括它们的名称)映射到路径段将不会给你提供非常干净的URL…我不知道你所说的“不太干净”URL是什么意思,而是“域/用户/编辑/id/3”以meTake的url为例,看起来非常干净。
http://stackoverflow.com/questions/25974343/mod-rewrite-problems-with-redirecting
很好,但如果使用您的系统,则会很好,例如http://stackoverflow.com/questions/id/25974343/title/mod-rewrite-problems-with-redirecting
谢谢。我不确定是否将url添加到.htaccess文件,但它似乎是不可避免的。它现在可以工作了。好吧,htaccess需要知道从哪里重写..这就是为什么url是必须的。。