【问题标题】:mod_rewrite: multi-level URL using a request parametermod_rewrite:使用请求参数的多级 URL
【发布时间】:2012-06-24 16:18:48
【问题描述】:

我目前已在用户文件夹中设置并正常工作。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?i=$1

例如 127.0.0.1/site/users/admin 转到 127.0.0.1/site/users/index.php?i=admin

现在这是个人资料页面,我该怎么做这样的事情。

用户/管理员/活动

这样它会显示该用户的活动页面吗?我完全不知道该怎么做。

最好让 index.php 接受页面 $_GET 变量吗?但是我将如何让 htaccess 解决它?

【问题讨论】:

  • 真的users/admin 被重定向到index.php?i=admin 还是index.php?i=users/admin?另外,我是否正确理解您希望将另一个$_GET 变量中的activity 发送到index.php?
  • 我更新了我的帖子,这样更容易理解,但是用户/管理员转到用户/index.php?i=admin。对于您的第二个问题,这取决于您是否认为这是拆分页面的最佳方式?例如,如果您在我的网站上有个人资料,它将是 users/Havelock。现在,如果我想见您的朋友,我希望能够使用 users/Havelock/Friends。最好让第二部分转到另一个 $_GET 变量吗?所以结果是 users/index.php?i=Havelock&page=Friends.

标签: php .htaccess mod-rewrite vanity-url


【解决方案1】:

你的规则看起来像这样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.*)$ index.php?i=$1&page=$2  [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?i=$1  [L]

现在你的 index.php 应该得到 2 个 $_GET 变量,ipage

【讨论】:

  • 这很好用!但是当我使用用户/管理员/朋友时,所有的 CSS 都失败了。但我直接链接到他们并再次工作(127.0.0.1/site/css/main.css 而不是 ../css/main.css)我是否必须为我的所有链接执行此操作?
  • @Trendee 这是因为你有相对于你的 css 的链接,你可以尝试添加 <base href="/site/css"> 或适合你页面标题的东西..
  • 只包含完整链接可以吗?
  • @Trendee 是的,您可以包含完整链接。它会附加到您在该页面上拥有的所有相对 URL 的开头。
  • 我的意思是,除了添加 之外,我可以只在样式表中包含完整的 url 吗?
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 2012-11-17
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
相关资源
最近更新 更多