使用 mod_rewrite 将基本 $_GET 变量重写为友好 URL

发布于 2025-01-03 08:06:03 字数 302 浏览 0 评论 0原文

我知道类似的问题很常见。我只是不知道从哪里开始用 / 和 . 重写规则我不知道如何将其他人的解决方案改造为我的解决方案。关于我的情况:

我正在对index.php文件使用基本的获取,看起来

http://www.example.com/index.php?page=about

我想重写它,因为

http://www.example.com/about

我知道这是相当简单的重写明智的,但它只是一种完全不同的语言,我尝试过但未能理解。谢谢

I know questions similar to this are common. I just don't even know where to begin with rewrite rules with the /'s and .'s I don't know how to retrofit other peoples solutions to mine. Onto my situation:

I am using a basic get on the index.php file that looks like

http://www.example.com/index.php?page=about

I want to rewrite that to

http://www.example.com/about

I know this is fairly simple rewrite wise, but its just a totally different language which I have tried and failed to comprehend. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你是暖光i 2025-01-10 08:06:03

试试这个:

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]

Try this:

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]
怎言笑 2025-01-10 08:06:03

甚至:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule ^(?!index.php\b).*   index.php?page=$0 [L,QSA]

注意:

  • 您应该始终在 .htaccess 文件中设置 RewriteBase
  • 我对此进行了概括,以便 index.php 拾取未映射到真实文件的任何字符串
  • (?!index.php\b) 是一个正则表达式,表示“但与 index.php 不匹配”
  • 如果您的请求可以包含请求参数,您将需要 [QSA] 标志。这将它们合并。

Or even:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule ^(?!index.php\b).*   index.php?page=$0 [L,QSA]

Note:

  • You should always set the RewriteBase in an .htaccess file.
  • I've generalised this so that index.php picks up any string which isn't mapping to a real file
  • The (?!index.php\b) is a regexp which says "but don't match to index.php"
  • You will need the [QSA] flag if your requests can contain request parameters. This merges them.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文