在.htaccess中启用人类可读的URL

uz75evzq  于 2023-01-17  发布在  其他
关注(0)|答案(6)|浏览(119)

前言:是的,这个问题好像是重复的,我找到了相关的问题,但是答案对我没有帮助。
你好,我想为我的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]

有人能帮帮我吗?谢谢!

rjzwgtxy

rjzwgtxy1#

网址:http://domain.com/index.php/controller/action
重写URL:http://domain.com/index.php?url=controller/action
.htaccess

DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

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

说明:
模式^index.php/(.*)$中的.*匹配传入URL中index.php/之后的所有内容,括号有助于将该部分捕获为变量$1,然后将其添加到替换URL /index.php?url= + $1的末尾。
[L, QSA]:L忽略其他重写规则,如果符合的话。QSA表示查询字符串追加。

qaxu7uf2

qaxu7uf22#

你已经

index.php?url=main/index

您要重写(然后用户重定向)到此

index.php/main/index

试试这个怎么样?

DirectoryIndex index.php

Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{QUERY_STRING} ^url=([a-z]+)/([a-z]+)$
RewriteRule ^.*$ http://mydomain.site/index.php/%1/%2 [R=302,L]

R = 301或302取决于您的需要
在这个例子中,我假设在原始的网址上只有a-z字符,只是为了澄清(由于事实上一般的过程是相反的)在这种方式下,用户将被重定向,这个规则不转换链接在您的网页上。

h9vpoimq

h9vpoimq3#

在线
RewriteRule ^(.*)$ index.php?url=$1 [NC](.*)匹配url中查询开始处的“?”之前的部分。
要使用查询中传递的值,您需要QSA标志。表示查询字符串追加。

8wigbo56

8wigbo564#

如果您的网址:例如...www.abcd.com/index.php/abcd/...

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
dgsult0t

dgsult0t5#

x1c 0d1x尝试下面的代码,只考虑index.php您可以根据您的要求替换它。让我知道如果您需要进一步的帮助。

DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine ON
RewriteBase /
RewriteRule ^(index\.php)/([0-9a-zA-Z\/_-]{1,99}) index.php?url=$2

对我起作用的是:-<?php var_dump($_GET); ?>这是我对url http://localhost/baba.php/abcd.和原始的.htaccess文件所做的唯一事情
DirectoryIndex baba.php RewriteEngine ON RewriteBase / RewriteRule ^(baba\.php)*/([0-9a-zA-Z\/_-]{1,99}) baba.php?url=$2

hpcdzsge

hpcdzsge6#

对于Magento 2.4,Magento在htaccess重写中总是会丢弃URL中的任何GET参数。我发现使其工作的唯一方法是创建一个重写模块。设置如下:https://magento.stackexchange.com/a/158811/109113

相关问题