0

我进行了重写,将字符串 , 重写site.com/foosite.com/?loc=foo.php. 它工作正常,但是当我输入时,它site.com/foo.php不是重写为,而是重写为除没有 CSS 之外site.com/?loc=foo.php.php显示的其他内容。site.com/?loc=foo.php我希望它重写为site.com/?loc=foo.php.php.

我有一个index.php读取$loc并包含foo.php.

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

疑难解答:

我回应$locindex.php,根本没有任何反馈。然后我回应$locfoo.php发现$loc没有声明。site.com/foo.php这导致在上面的代码中由于某种原因没有被重写的结论。

4

1 回答 1

1

您拥有的脚本应该可以正常工作。这是我测试过的。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ ?loc=$1.php

这表示:

1)您在 .htaccess 中有另一个参数会干扰。注释掉(用#)除上述之外的任何行。然后将它们一个一个(或尽可能少)拉回来,直到找到罪魁祸首。

2) loc.php 实际存在。-f 表示“如果文件不存在”

3) 当您生成 $loc 时,您出于某种原因排除了该变量。您可以通过将顶部添加到 index.php 文件来进行检查。第一行向您展示了 get(应该是 'lol'=>'loc.php.php'),第二行向您展示了所有正在进行的会议:

<?php
  print_r($_GET);
  echo '<br><br>';
  print_r($_SERVER);
?>
于 2012-07-24T06:49:41.663 回答