如何创建一个包含单个文件的目录?

时间:2012-12-01 00:24:46

标签: php url url-rewriting

我将签约企业在我的网站上做广告,我希望他们有一个直接的URL供他们的客户去。

喜欢,而不是www.website.com/page.php?id=324234234

我希望www.website.com/businessname

有一种简单的方法吗?我搜索并看到了人们试图做的一系列不同的事情,但我没有看到任何与我想做的事情相同的事情。

我正在使用VPS,我想确保我没有打开权限,这样任何人都可以进入并搞砸了。

此外,这些用户不会自行注册。我会这样做的。

获得最终结果的最简单方法是我正在寻找的。谢谢!

2 个答案:

答案 0 :(得分:5)

基本的网址重写可行。

添加到.htaccess文件

 RewriteEngine on
 RewriteRule ^(.*)$ page.php?businessname=$1 [L]

然后使用PHP将businessname重写为公司的ID /查找数据。

当然。如果你需要更复杂的重写,那么.htaccess重写规则是一门完整的科学...

答案 1 :(得分:2)

重复jtheman所说的更多解释:

使用以下内容创建名为.htaccess的文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ page.php?businessname=$1 [L]

当然,您需要启用目录级别.htaccess的功能 - 您正在使用VPS,因此如果尚未启用VPS,您应该能够执行此操作。

让我解释一下每行会做什么。

RewriteEngine on

打开URL重写功能

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

告诉Apache不要重定向目录中已存在的文件

RewriteRule ^(.*)$ page.php?businessname=$1 [L]

这就是魔术发生的地方。

^(.*)$这部分就像一个正则表达式匹配。它将告诉Apache收集其中包含任何字符的任何URL并将它们重定向到page.php?businessname =(。*)

所以,如果你发布: www.website.com/stackover

它真的会发送:www.website.com/page.php?businessname=stackover

然后您可以使用$_GET[businessname]动态更新页面。

希望这有帮助!