Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建此文件的干净URL(htaccess URL重写)_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php 如何创建此文件的干净URL(htaccess URL重写)

Php 如何创建此文件的干净URL(htaccess URL重写),php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我使用了一个支持系统,我想重写URL,使它们更易于搜索引擎优化和更好的可读性。我对.htaccess重写规则/regex有着非常基本的理解,我尝试了100种方法,但都没有成功 支持系统安装在此URL上: http://www.example.com/help/ 代码正在为知识库中的每一篇文章生成此URL: http://www.example.com/help/index.php?/selfhelp/view-article/article-1 http://www.example.com/

我使用了一个支持系统,我想重写URL,使它们更易于搜索引擎优化和更好的可读性。我对.htaccess重写规则/regex有着非常基本的理解,我尝试了100种方法,但都没有成功

支持系统安装在此URL上:

http://www.example.com/help/
代码正在为知识库中的每一篇文章生成此URL:

http://www.example.com/help/index.php?/selfhelp/view-article/article-1
http://www.example.com/hulp/index.php?/selfhelp/categories
代码正在为知识库中的类别概述生成此URL:

http://www.example.com/help/index.php?/selfhelp/view-article/article-1
http://www.example.com/hulp/index.php?/selfhelp/categories
如何将这些URL重写为可读且SEO友好的内容,如:

http://www.example.com/help/article/article-1
至于类别:

http://www.example.com/hulp/categories

如果可能的话?如果是这样,我如何使用.htaccess实现这一点

您可以使友好URL像这样工作,还可以重定向旧URL:

# Rewrite new URLs
RewriteRule ^help/article/(.+)$ help/index.php?/selfhelp/view-article/$1 [E=rewritten:1]
RewriteRule ^help/categories$ help/index.php?/selfhelp/categories [E=rewritten:1]

# Redirect old URLs
RewriteCond %{ENV:rewritten} !=1
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} ^/selfhelp/view-article/(.+)$
RewriteRule ^help/index\.php$ /help/article/%1 [R=301,L]

RewriteCond %{ENV:rewritten} !=1
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} =/selfhelp/categories
RewriteRule ^help/index\.php$ /help/categories [R=301,L]

您可以使友好URL像这样工作,还可以重定向旧URL:

# Rewrite new URLs
RewriteRule ^help/article/(.+)$ help/index.php?/selfhelp/view-article/$1 [E=rewritten:1]
RewriteRule ^help/categories$ help/index.php?/selfhelp/categories [E=rewritten:1]

# Redirect old URLs
RewriteCond %{ENV:rewritten} !=1
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} ^/selfhelp/view-article/(.+)$
RewriteRule ^help/index\.php$ /help/article/%1 [R=301,L]

RewriteCond %{ENV:rewritten} !=1
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} =/selfhelp/categories
RewriteRule ^help/index\.php$ /help/categories [R=301,L]

嗨,这太棒了,真管用!还有两个问题:-当使用简化的文章URL时,一些脚本丢失。如果我检查控制台,它将尝试通过:/help/article/script/jquery.js检索脚本,其中使用旧URL通过/help/script/jquery.js检索脚本。我可以为JS和CSS文件或类似的东西破例吗另一个问题是,我可以强制我的URL使用nice URL吗,或者我应该改变我的脚本,让它们从现在起使用nice URL吗?(由于这是第三方软件,我想尽量省去对代码的编辑)不要介意第一个问题。我知道源代码使用的是相对url,而且由于我的url现在是相对于help/article而不是help/it的,因此加载文件将失败。我将编辑源代码来解决这个问题。仍然对第二个问题感到好奇!谢谢最简单的方法是更改脚本,以便使用绝对URL引用它们。您目前使用的是相对URL,这导致了问题。如果需要的话,只需谷歌搜索这些术语就可以了解更多信息。因此,将对脚本的引用改为“/help/script/jquery.js”,而不是“script/jquery.js”。这并不是说这会搞乱它,只是它是相对于当前URL加载的,而不是从根目录引用的。是的,很高兴你解决了这个问题。将为其他人留下评论。为了正确使用nice URL,是的,您必须更改软件以生成URL。旧的URL可以重定向,但这不是实现的方法,您希望它们以这种方式在页面上生成。你可能还想重定向旧的URL。嗨,这是伟大的,并做工作!还有两个问题:-当使用简化的文章URL时,一些脚本丢失。如果我检查控制台,它将尝试通过:/help/article/script/jquery.js检索脚本,其中使用旧URL通过/help/script/jquery.js检索脚本。我可以为JS和CSS文件或类似的东西破例吗另一个问题是,我可以强制我的URL使用nice URL吗,或者我应该改变我的脚本,让它们从现在起使用nice URL吗?(由于这是第三方软件,我想尽量省去对代码的编辑)不要介意第一个问题。我知道源代码使用的是相对url,而且由于我的url现在是相对于help/article而不是help/it的,因此加载文件将失败。我将编辑源代码来解决这个问题。仍然对第二个问题感到好奇!谢谢最简单的方法是更改脚本,以便使用绝对URL引用它们。您目前使用的是相对URL,这导致了问题。如果需要的话,只需谷歌搜索这些术语就可以了解更多信息。因此,将对脚本的引用改为“/help/script/jquery.js”,而不是“script/jquery.js”。这并不是说这会搞乱它,只是它是相对于当前URL加载的,而不是从根目录引用的。是的,很高兴你解决了这个问题。将为其他人留下评论。为了正确使用nice URL,是的,您必须更改软件以生成URL。旧的URL可以重定向,但这不是实现的方法,您希望它们以这种方式在页面上生成。您可能还希望重定向旧URL。