当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发挥作用,我将不胜感激。
谢谢, 麦克