目前,我的.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]
而不是相应的文件。
答案 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。