使用不带.htaccess的PHP创建SEO永久链接

使用不带.htaccess的PHP创建SEO永久链接,php,.htaccess,seo,permalinks,Php,.htaccess,Seo,Permalinks,目前,我的页面URL如下所示: http://ourdomain.com/articles/?permalink=blah-blah-blah 我想将这些转换为: http://ourdomain.com/articles/blah-blah-blah 如何使用PHP而不是.htaccess来实现这一点?我认为如果不修改.htaccess,您很难做到这一点。您肯定需要使用mod_rewrite。有关更多信息,请参见此处的答案: 我认为如果不修改.htaccess,您很难轻松完成。您肯定需要使

目前,我的页面URL如下所示:

http://ourdomain.com/articles/?permalink=blah-blah-blah
我想将这些转换为:

http://ourdomain.com/articles/blah-blah-blah

如何使用PHP而不是.htaccess来实现这一点?

我认为如果不修改.htaccess,您很难做到这一点。您肯定需要使用mod_rewrite。有关更多信息,请参见此处的答案:

我认为如果不修改.htaccess,您很难轻松完成。您肯定需要使用mod_rewrite。有关更多信息,请参见此处的答案:

如何使用php而不是.htaccess实现这一点

你不能。您需要告诉web服务器如何处理物理上不存在的URL。在Apache中,这是在中心配置或.htaccess文件中完成的

如果您的服务器上已经有了
ACCEPATHINFO,您可以尝试使用如下URL

http://ourdomain.com/index.php/articles/blah-blah-blah
它将重定向到
index.php
,并在
$\u服务器[“PATH\u INFO”]
变量中包含
articles/blah blah blah
。这种方法被称为“穷人的URL重写”,因为您无法摆脱URL中的
index.php
部分。如果打开了上述设置(我认为默认情况下是这样),您可能不需要使用.htaccess文件就可以做到这一点

如何使用php而不是.htaccess实现这一点

你不能。您需要告诉web服务器如何处理物理上不存在的URL。在Apache中,这是在中心配置或.htaccess文件中完成的

如果您的服务器上已经有了
ACCEPATHINFO,您可以尝试使用如下URL

http://ourdomain.com/index.php/articles/blah-blah-blah

它将重定向到
index.php
,并在
$\u服务器[“PATH\u INFO”]
变量中包含
articles/blah blah blah
。这种方法被称为“穷人的URL重写”,因为您无法摆脱URL中的
index.php
部分。如果打开了上述设置(我认为默认情况下是这样),您可能不需要使用.htaccess文件就可以执行此操作。

可以在PHP中执行此操作,而无需修改.htaccess

只需在index.php或default.php中编写以下代码

未指定文件名。 因此,服务器会查看指定目录中是否存在“索引”或“默认”文件

假设存在index.php文件,服务器将调用:

http://ourdomain.com/articles/index.php
在GET变量中使用废话废话

PHP代码检查是否存在permalinkGET变量,并使用header()方法重定向


编辑:添加了urlencode()来进行输入验证

可以在PHP中进行验证,而无需修改.htaccess

只需在index.php或default.php中编写以下代码

未指定文件名。 因此,服务器会查看指定目录中是否存在“索引”或“默认”文件

假设存在index.php文件,服务器将调用:

http://ourdomain.com/articles/index.php
在GET变量中使用废话废话

PHP代码检查是否存在permalinkGET变量,并使用header()方法重定向


编辑:添加urlencode()进行输入验证

如果您有权访问服务器配置,则无需修改即可实现此功能。假设您使用的是Apache,您需要做的第一件事就是打开文档根目录上的“多视图”选项(即添加
选项“多视图”
)。现在将/articles/index.php复制到/articles.php(因此将脚本放在文档根目录中并重命名),并调整脚本,使其读取
$\u SERVER[“PATH\u INFO”]
以获取正确的页面(这当然取决于是否启用了AcceptPathInfo)


MultiView将确保在提供/articles/blah blah URL时调用articles.php脚本。

如果您有权访问服务器配置,则无需修改即可实现此目的。假设您使用的是Apache,您需要做的第一件事就是打开文档根目录上的“多视图”选项(即添加
选项“多视图”
)。现在将/articles/index.php复制到/articles.php(因此将脚本放在文档根目录中并重命名),并调整脚本,使其读取
$\u SERVER[“PATH\u INFO”]
以获取正确的页面(这当然取决于是否启用了AcceptPathInfo)


MultiView将确保在您提供/articles/blah blah URL时调用articles.php脚本。

u想要更改URL或只是想要更改此stingu想要更改URL或只是想要更改此Stings,因为这会导致大量错误日志,难道不可能使用作为404页面触发的php脚本吗?这是一种迂回的方式来复制
-f
-d
重写条件。@Lucaons是的,我也想到了,但它也需要.htaccess,因为您需要指定
ErrorDocument
指令。这将是一个解决办法,尽管这是一个可怕的办法,如果mod_rewrite和AcceptPathInfo都不存在,那么实际上,您可以在Apache上使用多视图,而不使用mod_rewrite来实现这一点,但前提是假定.htaccess或访问服务器配置。请看下面我的回答:p.尽管它会导致大量错误日志,但是否可以使用404页面触发的PHP脚本?这是一种迂回的方式来复制
-f
-d
重写条件。@Lucaons是的,我也想到了,但它也需要.htaccess,因为您需要指定
ErrorDocument
指令。这将是一个解决办法,尽管这是一个可怕的办法,如果mod_rewrite和AcceptPathInfo都不存在,那么实际上,您可以在Apache上使用多视图,而不使用mod_rewrite来实现这一点,但前提是假定.htaccess或访问服务器配置。请看下面我的回答:p.@ullasvk询问是否可以在不修改.htaccess的情况下使用PHP进行操作,因此我给出了非常好的回答