代码之家  ›  专栏  ›  技术社区  ›  Asara

mod rewrite变量始终是index.php

  •  0
  • Asara  · 技术社区  · 6 年前

    我想重写 domain.com/pagename /index.php?page=$pagename 有了这个简单的规则:

    RewriteRule ^(.*)$ index.php?page=$1 [L]
    

    但矛盾的是我总是 index.php 对于 $1 而不是 pagename ,为什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Justin Iurman    6 年前

    你有一个无限的重定向循环,这就是为什么你会得到一个意想不到的结果(奇怪的是,你不会得到一个内部服务器错误,顺便说一下…)

    这是你想要什么的规则

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

    在内部重写URL之前,它会检查该URL是否为物理文件夹/文件。此规则仅对一个级别的URL有效(例如 http://example.com/placeholder 而不是 http://example.com/placeholder/somethingelse )

        2
  •  1
  •   Er. Mukesh Sharma    6 年前

    试试这个

    http://example.com/pagename = & gt; http://example.com/index.php?page= $pagename页

    RewriteRule ^pagename$ /index.php?page=$pagename&%{QUERY_STRING}