传递给PHP的URL目录作为变量保留在URL

时间:2019-05-03 08:12:48

标签: php regex http mod-rewrite apache2

我一直试图使用mod_rewrite将无效的URL目录作为变量传递给PHP脚本,但仍保留在URL中。

示例:

http://my.test.com/mydir重定向到 http://my.test.com/index.php?dir=mydir,但网址显示http://my.test.com/mydir

http://my.test.com/mydir/example.php重定向到 http://my.test.com/example.php,但网址显示http://my.test.com/mydir/example.php

这将用于许多将目录保留在URL中的PHP脚本。我需要css / js / imgs目录仍然可以访问。我相信我可以使用html头中的基本href来做到这一点。我一直试图将无效目录保留在URL中。

在我当前的示例中,如果我打电话

http://my.test.com/mydir

它显示index.php,URL保持不变。如果我打电话

http://my.test.com/mydir/index.php它给我一个404错误。

我已经尝试了每个有关堆栈溢出的示例,以及从Google搜索中得出的太多示例。经过两天的努力,我认为我需要一点帮助。

我的.htaccess:

RewriteEngine on

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

我用于测试的index.php:

<?php

if (isset($_GET['c'])) {
  $companyid = $_GET['c'];
}
if (isset($_GET['url'])) {
  $url = $_GET['url'];
}

echo "DEBUG: " . $companyid . "<br>";
echo "DEBUG: " . $url;
exit;

?>

0 个答案:

没有答案