【问题标题】:.htaccess to change URL.htaccess 更改 URL
【发布时间】:2010-09-29 21:25:53
【问题描述】:

所以我有一个 mvc 系统设置,但它不会生成搜索引擎友好的 url。

典型的 url 格式为:

http://sitedomain.com/class/classMethod?parameter=valueA?parameter2=valueB

这是我需要的:

http://sitedomain.com/class/valueA/valueB/

我的 .htaccess 实际上已经修改了部分 url 但我不知道如何做第二部分

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?controller=$1 [L,QSA]

(原本看起来像http://site.com/index.php?controller=class,但是运行下面的htaccess之后,看起来像http://site.com/class

如果有人能帮我解决这个问题,那就太好了,谢谢。

【问题讨论】:

  • 在我看来,正如您目前所描述的那样,在您重写之后,您不会将 classMethodparameterparameter2 交给 MVC .这肯定不是你想要的吧?也许您想要为/class/valueA/valueB 提供特定的方法和参数名称?
  • 实际上参数嵌入在链接中,就像 (site.com/class/method?param=something"),当我点击链接时,我在 url 中看到了确切的内容,但我真正想要的是 (@987654322 @)

标签: php .htaccess url-rewriting


【解决方案1】:
RewriteRule ^/class/(.*)/(.*)/$ index.php?controller=class&parameter=$1&parameter2=$2 [L,QSA]

【讨论】:

  • hmm 但是你看,我可能有也可能没有传入参数,也可能有超过 2 个参数(没有定义的数量,因为网站上会有不同的形式)。我认为这真的很接近我的需要。
  • 然后为您期望的所有参数组合添加条件。鉴于您无法使用脚本进行这些检查,您没有太多选择。
【解决方案2】:

我使用以下 .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$            rewrite.php?%{QUERY_STRING}

从 url 中提取部分都是在 PHP 中完成的。
解析$_SERVER['SCRIPT_NAME'] 变量。

(我发现 php 代码比复杂的 apache 重写规则更容易调试。)

【讨论】:

  • 我实际上不知道如何编写 .htaccess 那是我的问题,我不能篡改 php,因为它是一个视图控制器系统,因此它将 url 映射到类,然后映射到该类的方法。所以一切都来自 url,我的问题是,如果我有像 /class/method?param=1&param2=3 这样的参数,并且可能有任意数量的参数,包括没有参数
猜你喜欢
  • 2012-12-10
  • 2016-08-16
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
相关资源
最近更新 更多