前言:是的,这个问题好像是重复的,我找到了相关的问题,但是答案对我没有帮助。
你好,我想为我的PHP项目添加人类可读的URL支持。现在我的URL查询字符串看起来像:
index.php?url=main/index
我想让它看起来像:
index.php/main/index
我读了以下文章:
Stackoverflow
Cheatsheet
Stackoverflow
Stackoverflow
但当我这么做的时候
var_dump($_GET['url']); // get empty array
,得到空数组,就像没有添加url参数一样。
我当前的.htaccess
:
DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ index.php?url=$1 [NC]
有人能帮帮我吗?谢谢!
6条答案
按热度按时间rjzwgtxy1#
网址:
http://domain.com/index.php/controller/action
重写URL:
http://domain.com/index.php?url=controller/action
.htaccess
说明:
模式
^index.php/(.*)$
中的.*
匹配传入URL中index.php/
之后的所有内容,括号有助于将该部分捕获为变量$1
,然后将其添加到替换URL/index.php?url=
+$1
的末尾。[L, QSA]
:L忽略其他重写规则,如果符合的话。QSA表示查询字符串追加。qaxu7uf22#
你已经
您要重写(然后用户重定向)到此
试试这个怎么样?
R = 301或302取决于您的需要
在这个例子中,我假设在原始的网址上只有a-z字符,只是为了澄清(由于事实上一般的过程是相反的)在这种方式下,用户将被重定向,这个规则不转换链接在您的网页上。
h9vpoimq3#
在线
RewriteRule ^(.*)$ index.php?url=$1 [NC]
(.*)匹配url中查询开始处的“?”之前的部分。要使用查询中传递的值,您需要QSA标志。表示查询字符串追加。
8wigbo564#
如果您的网址:例如...www.abcd.com/index.php/abcd/...
dgsult0t5#
x1c 0d1x尝试下面的代码,只考虑index.php您可以根据您的要求替换它。让我知道如果您需要进一步的帮助。
对我起作用的是:-
<?php var_dump($_GET); ?>
这是我对urlhttp://localhost/baba.php/abcd
.和原始的.htaccess文件所做的唯一事情DirectoryIndex baba.php RewriteEngine ON RewriteBase / RewriteRule ^(baba\.php)*/([0-9a-zA-Z\/_-]{1,99}) baba.php?url=$2
hpcdzsge6#
对于Magento 2.4,Magento在htaccess重写中总是会丢弃URL中的任何GET参数。我发现使其工作的唯一方法是创建一个重写模块。设置如下:https://magento.stackexchange.com/a/158811/109113