Php htaccess和漂亮链接

Php htaccess和漂亮链接,php,apache,.htaccess,Php,Apache,.htaccess,我正在尝试写一个简单的博客,它在我找到漂亮的链接之前一直运行良好 我想做的是使用像mysite.com/blog/this_post这样的url,并将其作为url参数传递到index.html文件中,所以index.html?blog=this_post 到处搜索,发现了一堆htaccess代码,但大多数都不起作用。我确实找到了一个解决方案,它试图工作,但由于某些原因,它做得不正确。(带和不带选项+FollowSymLinks部分) 当我使用它时,我会在url中获得/blog/index.htm

我正在尝试写一个简单的博客,它在我找到漂亮的链接之前一直运行良好

我想做的是使用像mysite.com/blog/this_post这样的url,并将其作为url参数传递到index.html文件中,所以index.html?blog=this_post

到处搜索,发现了一堆htaccess代码,但大多数都不起作用。我确实找到了一个解决方案,它试图工作,但由于某些原因,它做得不正确。(带和不带选项+FollowSymLinks部分)

当我使用它时,我会在url中获得/blog/index.html?blog=index.html,而不是像预期的那样保留/blog/this_帖子并将其移植到index.html中。服务器上的某些内容可能设置不正确吗?博客的其他一切都很有魅力,但脚本没什么问题,只是让漂亮的链接发挥作用

查看了一个有wordpress的老网站,并对htaccess代码进行了修改,但它也做了同样的事情。此处和其他网站上的所有其他搜索指向上面的相同解决方案或wordpress,但出于某种原因,它将index.html传递给脚本,而不是预期的最后一个url段“this_post”

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.html [L]
</IfModule>
# END WordPress
地址栏中保留的哪个正确?但是htaccess文件提取这个帖子并将其作为参数传递给index.html脚本。这就是上面的例子应该做的。为什么要把地址栏改成

mysite.com/blog/index.html?blog=index.html 
我不知道为什么

旁注,因为我之前就知道了…是的,我知道使用.php扩展名,但是.html是一个客户机,要求他们不要放弃


编辑可能重复的链接是我已经找到并试图获取当前重写规则的链接,但它仍然不起作用

最好的方法是做一些简单的事情,比如:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^([^/]*)\.html$ index.php?blog=$1 [L]

Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
然后您可以执行如下URL操作:

mysite.com/这篇文章

等于:

mysite.com/index.php?blog=这篇文章

这样你可以同时打这两个电话,而且会很好地工作

一般来说,你需要首先决定你想要你的搜索引擎优化URL是什么样子,然后你需要设置.htaccess正则表达式和规则


注意:GET调用不能使用
.html
。您可以使用
.php
文件进行工作,并使用
$\u GET['blog']
从URL获取数据。

最好的方法是简化如下操作:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^([^/]*)\.html$ index.php?blog=$1 [L]

Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
然后您可以执行如下URL操作:

mysite.com/这篇文章

等于:

mysite.com/index.php?blog=这篇文章

这样你可以同时打这两个电话,而且会很好地工作

一般来说,你需要首先决定你想要你的搜索引擎优化URL是什么样子,然后你需要设置.htaccess正则表达式和规则


注意:GET调用不能使用
.html
。您可以使用
.php
文件进行您的工作,并使用
$\u GET['blog']
从URL获取您的数据。

似乎找到了有效的组合,[NC,L]标志组合不断给我一个崩溃错误,所以我只留下了[NC]。将它放在根帐户目录中似乎也不起作用,所以我移动到web目录(public_html)中,现在就可以了

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/(.*) /blog/index.html?blog=$1 [NC]

仍然不确定为什么L标志会在页面上给我一个服务器崩溃,或者为什么在根目录中不起作用,但将其移动到公共html文件夹中会起作用,这可能是我忽略的一个服务器配置问题吗?

似乎已经找到了有效的组合,[NC,L]标志组合不断给我一个崩溃错误,所以我只留下了它[NC]。将它放在根帐户目录中似乎也不起作用,因此我移动到web目录(public_html)中,现在就可以了

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/(.*) /blog/index.html?blog=$1 [NC]

仍然不确定为什么L标志会在页面上导致服务器崩溃,或者为什么将其放在根目录下不起作用,但将其移动到公共html文件夹中会起作用,这可能是我忽略的服务器配置问题吗?

可能重复“是的,谢谢”,这是我找到的指向当前htaccess线路的链接之一,我因为某种原因,它不起作用,无法找出可能的重复是的,谢谢你,这是我找到的一个链接,将我引向当前的htaccess线路,它只是因为某种原因不起作用,无法找出为什么.html文件上的yGet起作用,除了漂亮的链接外,其他一切都起作用。我尝试了这个解决方案,并et a 404error@VikingNM如果您将此RewriteRule^([^\.]+$$1.htm[NC,L]更改为RewriteRule^([^\.]+$$1.html[NC,L]它可以工作吗?我认为“html”中的“L”是很难判断的。请提供上面的PHP代码(更新您的问题),提供当前的htaccess并将看到。一个错误:-您是否在live domain或localhost上工作,您是否在根目录下工作或在某个文件夹中工作?请提供URL地址的原始格式get在.html文件上工作,除了漂亮的链接外,所有内容都正常工作。我尝试了此解决方案并获得了404error@VikingNM如果你改变这个RewriteRule^([^\.]+)$$1.htm[NC,L]来重写Rule^([^\.]+)$$1.html[NC,L]它能工作吗?我认为错过了“html”中的“L”。嗯……很难这样说。请提供上面的PHP代码(更新您的问题),提供当前htaccess并将看到。一个错误:-您是否在live domain或localhost上工作,是否在根目录下工作或在某个文件夹中工作?请提供URL地址的原始格式