htaccess和漂亮的链接

时间:2017-10-27 11:23:11

标签: php apache .htaccess

我正在尝试编写一个工作正常的简单博客,直到我找到漂亮的链接。

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

到处搜索,发现了一堆htaccess代码,但大多数都没有用。我确实找到了一个试图工作的解决方案,但由于某种原因没有正确地做到这一点。 (有和没有Options + FollowSymLinks部分)

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^blog/(.*) /blog/index.html?blog=$1

当我使用它时,我在网址中获取/blog/index.html?blog=index.html,而不是保留/ blog / this_post并将其移植到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

用户输入

会发生什么
mysite.com/blog/this_post
保留在地址栏中的

是否正确?但是htaccess文件会拉出this_post并将其作为参数传递给index.html脚本。这就是上面的例子应该做的事情。为什么它将地址栏更改为

mysite.com/blog/index.html?blog=index.html 

我不知道为什么

另外注意,因为我之前得到了这个...是的我知道使用.php扩展但是.html是一个客户要求他们没有开始使用。

编辑 - 可能重复的链接是我已经找到的并尝试获取当前的RewriteRule,但它仍然无法正常工作。

2 个答案:

答案 0 :(得分:0)

最好的方法就是制作这样简单的东西:

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]

然后您可以执行以下网址:

mysite.com/this_post

等于:

mysite.com/index.php?blog=this_post

就像那样你可以做两个电话并且可以正常工作。

通常,您需要首先确定您希望SEO网址的外观,然后您需要设置.htaccess正则表达式和规则。

注意:您无法使用.html进行GET调用。您可以将.php个文件用于您的作品,并使用$_GET['blog']从网址中提取您的数据。

答案 1 :(得分:0)

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

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

仍然不确定为什么L标志会让我在页面上发生服务器崩溃,或者为什么在根目录中没有它可以工作但是将其移动到public_html文件夹中,是否可能是服务器配置问题我和#39;我可以俯视吗?