URL包含键/值对时清除URL

时间:2016-08-17 20:39:36

标签: .htaccess url mod-rewrite

当URL包含键/值对时,我遇到了干净的URL问题。

很抱歉...但是,认为这可能有助于理解我的问题。

我正在关注这个例子(https://www.youtube.com/watch?v=lRmlDeB7Ovs)他的例子有效,我的没有。我认为我可能必须在我的系统中启用其他东西......因为我必须在我的.htaccess文件的第一行(见下文)中允许mod_rewrite使用php文件类型。

目标#1:这是有效的

从简单开始,我希望我的URL不显示文件扩展名。

在:

localhost/rewrite/handp/anyFileName.php

后:

localhost/rewrite/handp/anyFileName     <-- Good, no filename extension and the file displays properly in the browser.

我使用以下规则来完成此任务:

RewriteRule ^([-\w]+)$ $1.php  [NC,L]

目标#2:这是正在工作,我不明白为什么?

案例#1:而不是以下网址:

localhost/rewrite/handp/test.php/id=4       <-- This works: echos "value = 4"

案例#2:我想传递这个网址:

localhost/rewrite/handp/test/4          <-- This does **NOT** work: echos "Hello"

对于任何一个URL,我想将4回显到浏览器窗口。

我使用以下规则来完成此任务:

RewriteRule ^test/([\d]+)$ test.php?id=$1 [NC,L]

注意:URL确实显示&#34;干净地&#34;如果#2,但键/值对没有传递给test.php页面,因此,回声你好。

test.php的

<?php
if ( isset($_GET['id']) )
{
    echo 'Value = ' . $_GET['id'];
}
else
{
    echo 'Hello';
}

这是我的 .htaccess 文件,位于文件夹&#34; handp&#34;:

# I had to add the following line in .htaccess or enable it in /etc/mime.type.  I chose to put this in .htaccess.
AddType application/x-httpd-php         phtml pht php

RewriteEngine on

# Any filename with no extension, then get that filename and add on the php extension.
RewriteRule ^([-\w]+)$ $1.php  [NC,L]

# If you see the filename "test", slash, followed by some digits, then get filename "test", add on a php extension, and pass it the key "id" and the value.
RewriteRule ^test/([\d]+)$ test.php?id=$1 [NC,L]

home.php 包含可以点击的网址

<?php
for ($ii = 0; $ii < 10; $ii++)
{
    // Example: localhost/rewrite/handp/test/4
    echo "<a href='test/$ii'>User $ii</a><br>";
}
?>

<-- Example: localhost/rewrite/handp/nfl_north_division -->
<p>Click <a href="nfl_north_division">Me</a> to go to the NFL North Division.</p>

nfl_north_division.php

<h1>NFL North Division</h1>

这是我的系统

Linux版本

cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.1
DISTRIB_CODENAME=rebecca
DISTRIB_DESCRIPTION="Linux Mint 17.1 Rebecca"

Note: Linux Mint 17.1, which is based on Ubuntu 14.04 LTS

Apache的版本

apache2 -version
Server version: Apache/2.4.23 (Ubuntu)
Server built:   2016-07-11T00:00:00

DOCUMENT_ROOT: /var/www/html

PHP版本

php -v
PHP 7.0.9-1+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.9-1+deb.sury.org~trusty+1, Copyright (c) 1999-2016, by Zend Technologies

我是否有其他配置问题需要解决,因为我通过添加.htaccess文件中的第一行解决了这个问题。 如果有人能告诉我如何让目标#2发挥作用,我将不胜感激。

谢谢, 麦克

0 个答案:

没有答案