猿问

带有 $_GET 方法的漂亮 URL

我是编码新手,因此将不胜感激额外的解释。到目前为止,我能够使用我的 htaccess 文件删除文件扩展名。


Options -MultiViews

RewriteEngine on


# Does not apply to existing directories, if directory exist then don't run the rule


RewriteCond %{REQUEST_FILENAME} !-d


RewriteCond %{REQUEST_FILENAME}\.php -f


RewriteRule ^(.*)$ $1.php [NC,L]

在“仪表板”目录中,我有另一个 index.php(仅对登录的用户显示)。在索引中,我有一个 $_GET 方法来检索用户的状态。因此,当我访问 localhost/project/dashboard/ 时,我可以查看 index.php。


当我想使用 GET 方法时,我的 url 将类似于 localhost/project/dashboard/?status=active,我试图将其更改为 localhost/project/dashboard/active 或 localhost/project/dashboard/status/active。


我在本地主机环境中工作,我的目录是这样分解的。


MAIN

- includes

- dashboard

|

-- subfolder

|-- somefile.php

|

-- index.php

- css

index.php

login.php

logout.php

.htaccess ** (this is the file im working with)

我正在使用 URL:http://localhost/project/dashboard/active


我尝试将以下几行添加到我的 .htaccess


1.


RewriteRule ^([a-zA-Z]+)/?$ /?status=$1 [NC,L,QSA] - doesn't work

未找到对象!错误 404


2.


RewriteRule ^dashboard/([a-zA-Z]+)/?$ /?status=$1 [NC,L,QSA] - doesn't work

重定向到本地主机/仪表板


3.


如果我在“仪表板”目录中创建另一个 .htaccess 并使用 write 1 line


RewriteRule ^([a-zA-Z]+)/?$ index.php?status=$1 [NC,L,QSA] - WORKS

但是,当使用第三种方法时,我无法访问仪表板中的子文件夹或其文件。因此,如果我尝试访问 localhost/project/dashboard/subfolder/somefile,它会返回“找不到对象!” 错误 404


如果我尝试访问 localhost/project/dashboard/subfolder/somefile.php 它会重定向到 localhost/project/dashboard/


以后会有更多的文件夹和子文件夹。


幕布斯6054654
浏览 232回答 2
2回答

哈士奇WWW

尝试RewriteRule ^project/dashboard/(.*)$ project/dashboard/?status=$1 [L]

SMILET

阅读汉娜的建议后,我调整了文件路径。RewriteRule ^dashboard/([a-zA-Z]+)/?$ dashboard/?status=$1 [NC,L,QSA]这似乎可以解决问题!
随时随地看视频慕课网APP
我要回答