1

我在使用 .htaccess 文件创建虚 URL 时遇到问题。

我的 .htaccess 文件当前保存在我站点的根文件夹 (mysite/.htaccess) 中。我正在为其编写虚荣 URL 的页面位于下一层(mysite/jobs/job.php)。

我的 .htaccess 文件中的代码是:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/jobs/job.php?job_id=$1

在 mysite/jobs/job.php 文件中,我包含了以下代码:

if(isset($_GET['job_id']) == true && empty($_GET['job_id']) == false) {
    $job_id = $_GET['job_id'];
    echo $job_id;

}

我的问题是这样的:当我在浏览器中输入“http://localhost/mysite/jobs/1”时,这会回显jobs/1,而我希望它回显1(即没有“jobs/”的实际工作ID开头)。有谁知道我如何更改 .htaccess 文件来实现这一点,而不必将 php 文件上移一级?

4

3 回答 3

1

那是因为您的 RewriteRule 正在捕获整个 REQUEST_URI(因为您的正则表达式)。请尝试以下操作:

RewriteRule ^jobs/(\d+)$ /mysite/jobs/job.php?job_id=$1

(不记得前导斜线是否需要存在......两种方式都尝试)。

于 2012-12-08T00:08:25.103 回答
0

这是因为您传递了 url 的整个上下文mysite/

试试这个:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/jobs/(.*)$ /mysite/jobs/job.php?job_id=$1
于 2012-12-08T00:09:21.633 回答
0

该视频清楚地解释了如何创建虚 URL 以及如何克服存在的问题。但是,您的代码对我来说似乎很好。看看这个视频是否有帮助,这是我学习制作的地方。

虚 URL 示例

PS:还有一个视频继续,别忘了检查

于 2013-01-16T13:56:06.953 回答