我正在尝试编写一个工作正常的简单博客,直到我找到漂亮的链接。
我要做的是使用像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,但它仍然无法正常工作。
答案 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;我可以俯视吗?