删除显示的网址的一部分,而不使用.htaccess更改$ _GET

时间:2017-01-19 00:49:30

标签: php .htaccess redirect mod-rewrite get

目前,我的.htaccess代码将{REQUEST_URI}作为$_GET数组发送到load.php,其中该页面调用请求的控制器。出于搜索引擎优化的目的,我想删除部分网址,而不更改发送到$_GET的{​​{1}}数组。

例如,如果我有:

load.php

我想要显示的网址:

domain.com/products/product-name

不更改发送到domain.com/product-name 的{​​{1}}变量。

非常感谢任何帮助。我已经包含了我当前的代码。

$_GET

澄清:

load.php充当“控制器”。变量,指示应用程序打开相应的文件。因此,我无法硬编码产品'进入RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] ,因为这会不断打开$_GET[0]而不是相应的文件。

1 个答案:

答案 0 :(得分:1)

  

我想要显示的网址:

     

domain.com/product-name

     

而不更改$ _GET 变量   发送到load.php。

执行您要求的唯一方法是使用products对重写的替换字符串中的部分URL进行硬编码。见下文。然后,URL load.php将始终收到products/somefile

RewriteEngine on

RewriteBase /

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

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

更新:如果您想要替换一个路径/控制器,此解决方案将起作用。

您必须参考控制器一些方法。因此,如果您在请求中没有控制器,则无法转发到$ _GET变量。 PHP不知道请求应该去哪里。在路径中拥有它并没有错,它不应该影响你的SEO。