【问题标题】:.htacces to capture the page name and send it as a get method.htaccess 捕获页面名称并将其作为 get 方法发送
【发布时间】:2011-04-08 14:01:08
【问题描述】:

我正在尝试捕获一个网址,例如

http://www.mysite.com/somepage.php?sometext=somevalue

并将其重定向到。

http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue

我尝试在线搜索此类 .htaccess,但找不到。

你能帮帮我吗?

【问题讨论】:

标签: php .htaccess


【解决方案1】:

我很确定这是重复的,但我在找到它/它们时遇到了一些问题 [编辑:I found one,虽然可能不是最好的例子]。

无论如何,这是一个用相当标准的代码解决的相当标准的问题:

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

RewriteRule 将整个请求捕获为$1,并将其作为page GET 参数传递给 index.php。

末尾的 [QSA] 标志表示采用任何现有的 GET 参数(在您的示例中为 sometext=somevalue),并将它们添加为新请求的附加 GET 参数。 ([L] 标志只是表示这应该是执行的最后一条规则。)

请注意,这也会重定向对图像或 CSS 文件等内容的请求,因此最好在此规则之前直接添加以下几行

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

这些行表示“如果请求是针对实际存在的文件或目录,则不处理规则。”这样,对真实文件的请求将直接由 Apache 处理,而不是由您的 PHP 脚本处理(或更可能是错误处理)。

【讨论】:

    【解决方案2】:
    RewriteRule ^(.*).php?sometext=(.*)$ index.php?page=$1.php&sometext=$2 [QSA,L] #rewrite
    RewriteRule ^(.*).php?sometext=(.*)$ http://www.mysite.com/index.php?page=$1.php&sometext=$2 [R=301,L] #redirect
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-01
      • 2015-11-08
      • 2017-06-30
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多