【问题标题】:Having much trouble with mod_rewritemod_rewrite 遇到很多麻烦
【发布时间】:2015-10-05 05:58:32
【问题描述】:

我的.htaccess 文件有一些问题。

我想显示这个网址的内容:

http://mywebsite.com/admin/payments/invoices/view/index.php?id=123456

当我访问这个时:

http://mywebsite.com/admin/payments/invoices/view/123456/

这是我的实际 .htaccess

Options +FollowSymlinks
RewriteEngine On
RewriteBase /admin/payments/invoices/
RewriteRule ^/view/([0-9]+)/(index.php)?$ /view/index.php?id=$1 [L,QSA]

你有什么想法吗?

谢谢!

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    如果您确实有view 目录,那么最简单的方法是将这个.htaccess 放在那个目录中(即{DOCUMENT_ROOT}/admin/payments/invoices/view/.htaccess):

    Options +FollowSymlinks
    RewriteEngine On
    
    RewriteBase /admin/payments/invoices/view
    RewriteRule ^(\d+)$  index.php?id=$1 [L,QSA]
    

    RewriteRule 左侧的 index.php 不是必需的(实际上,我希望它不起作用:在这个阶段,DirectoryIndex 不应该被注入到 URI 中 - 除非有其他的RewriteRule 有效?),RewriteBase 末尾的 / 也无效。

    我在Apache/2.2.21上测试过上面的,但是以后的版本模块规则是一样的。

    【讨论】:

      【解决方案2】:

      试试这个:

      <IfModule mod_rewrite.c>
      RewriteEngine On
      
      RewriteRule ^.*admin/payments/invoices/view/index\.php\?id=([0-9]+) admin/payments/invoices/view/$1/index.php [L]
      
      </IfModule>
      

      【讨论】:

      • 您无法匹配RewriteRule中的查询字符串
      • 我明白了,我不知道。我会尝试更新答案,但我不确定如何使用 htaccess 提取该值。可能最好创建一个虚拟的index.php 文件并使用header 在PHP 中重定向客户端。你怎么看?
      【解决方案3】:

      尝试将其放入文档根目录的 htaccess 文件中:

      RewriteEngine On
      RewriteCond %{QUERY_STRING} (^|&)id=([0-9]+)
      RewriteRule ^admin/payments/invoices/view/index\.php$ /admin/payments/invoices/view/%1/index.php [L]
      

      因此,当您在浏览器的 URL 地址栏中输入 http://mywebsite.com/admin/payments/invoices/view/index.php?id=123456 时,您将获得 /admin/payments/invoices/view/123456/index.php 的内容。 Since it's completely unclear what you actually want,如果你想反过来:

      RewriteEngine On
      RewriteRule ^admin/payments/invoices/view/([0-9]+)/(index.php)?$ /admin/payments/invoices/view/index.php?id=$1 [L,QSA]
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2020-06-15
      • 1970-01-01
      • 2011-08-20
      相关资源
      最近更新 更多