1

我将注册企业在我的网站上做广告,我希望他们有一个直接的 URL 供他们的客户访问。

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

我希望有www.website.com/businessname

有没有一种简单的方法可以做到这一点?我搜索并看到了人们试图做的一大堆不同的事情,但我没有看到任何与我想做的事情相同的事情。

我正在使用 VPS,并且我想确保我不会打开权限,以便任何人都可以进入那里并搞砸事情。

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

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

4

2 回答 2

5

基本的 URL 重写可以工作。

添加到您的 .htaccess 文件

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

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

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

于 2012-12-01T00:29:12.453 回答
2

用更多的解释重申 jtheman 所说的话:

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

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

当然,您需要启用目录级别 .htaccess 的能力 - 您使用的是 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]动态更新页面。

希望这可以帮助!

于 2012-12-01T00:42:38.790 回答