我想让商店的URL容易辨识。
- 当前URL结构**
https://my-domain.com/store/store.php?page=packages&id=1
- 所需的URL结构**
https://my-domain.com/store/packages/1
- 还可直接访问PHP文件,例如:**
https://my-domain.com/store/profile.php
至https://my-domain.com/store/profile
我怎么会需要去之后呢?我真的很感激你能提供任何帮助。
- 也可能值得注意的是,在基目录中,WordPress站点运行着自己的. htaccess文件。*
我已经试过了
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^store/store/page/(.*)/id/(.*) /store/store.php?page=$1&id=$2
RewriteRule ^store/store/page/(.*)/id/(.*)/ /store/store.php?page=$1&id=$2
但那不起作用
3条答案
按热度按时间axkjgtzd1#
这段代码会起作用。
RewriteEngine将从所有PHP文件中删除.php RewriteRule将重写URL,如page/id
用于删除.php扩展名
对于页面/id
lhcgjxsq2#
您可以在第一部分中使用以下代码:
RewriteRule ^store/((?!store)[^/]+)/([^/]+)$ /store/store.php?page=$1&id=$2 [L]
oxcyiej73#
虽然其他人的答案没有错,但更现代的方法是(包括WordPress、Symfony和Laravel)是将不存在的URL发送到单个路由器脚本,通过这样做,你只需要乱弄一次一个htaccess文件来设置东西,如果你添加更多的“子文件夹”,永远不会再碰它,你可以在PHP中完成所有这些。这也是更好的可移植性,这意味着你可以把它带到其他的服务器平台上,比如Nginx,只需做一些小的修改,并且不需要处理RegEx。
htaccess是相当简单的。将所有以
/store/
开头的请求路由到/store/
文件夹中的一个名为router.php
的新文件中。这是一个内部重定向,这意味着它不是301或302。然后,在新的
router.php
文件中,可以解析$_SERVER['REQUEST_URI']
以确定实际请求的URL,甚至可以重新构建全局变量$_GET
:我还建议把htaccess规则放在站点根目录的htaccess文件夹中,在WordPress的上面。创建多个文件没有什么错,这只是把事情放在一个中心位置,使调试更容易(恕我直言)。