我对. htaccess很不满意。我想创建一个友好的网址为我的网站上工作...
基本上我想转换这个:
http://website.com/index.php?ctrl=pelicula&id=0221889
http://website.com/index.php?ctrl=pelicula&id=0160399&tab=posters
变成这样:
http://website.com/pelicula/0221889/
http://website.com/pelicula/0221889/posters/
如果我以后需要它,我还想知道如何将文章标题添加到URL的末尾,就像这样(我使用PHP):
http://website.com/pelicula/0221889/the-article-name/
http://website.com/pelicula/0221889/the-article-name/posters/
注:Stackoverflow方法对我也有好处,比如这个问题的url是:
http://stackoverflow.com/questions/3033407/htacces-to-create-friendly-urls-help-needed
但是你可以在id后面放任何东西,它也会起作用。就像这样:
http://stackoverflow.com/questions/3033407/just-anything-i-want
我已经使用了一些自动Web工具来创建.htacces文件,但它不能正常工作。所以我请求你的帮助。
我也会很高兴,如果你能推荐.htacces最佳实践和建议..
编辑:根据我在这里得到的一些答案,我把这个:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/([^/]+)/([^/]+)/?([^/]*)/?$ index.php?ctrl=$1&id=$2&tab=$3 [QSA,L]
</IfModule>
但我得到默认主机'页面未找到'错误。
我也试过:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/(\d+)/([^/]+)/?$ index.php?ctrl=$1&id=$2&tab=$3 [QSA,L]
RewriteRule ^([^/]+)/(\d+)/?$ index.php?ctrl=$1&id=$2 [QSA,L]
RewriteRule ^([^/]+)/?$ index.php?ctrl=$1 [QSA,L]
</IfModule>
这也行不通。它会把我带到默认的404.php页面。
mod_rewrite已启用并工作。
救命啊
7条答案
按热度按时间0s0u357o1#
在
http://website.com/
的文档根目录中,我会放置一个如下所示的htaccess
文件:然后在PHP脚本中,你可以随意操作
$_GET['url']
变量:9njqaruj2#
刚刚在本地测试了这个,它似乎做了你需要的:
这就是它所做的:
这些重写可以使用或不使用尾部斜杠-如果您希望它们只在没有斜杠的情况下工作,请从前两次重写的末尾删除
(?:/)?
。您还可以使用mod_rewrite根据需要添加或删除尾部斜杠。ldioqlga3#
第一个假设你的.htaccess文件在根目录下:
第二个:
或者如果它总是
posters
而不是不同的选项卡:我添加了
(/)?
,这意味着URI可以使用或不使用尾随斜杠。至于另一个,我可能总是把文章放在最后,这样重写或添加另一个
/value
,这样重写就知道标签和文章之间的区别,或从正则表达式中排除破折号。lnxxn5zx4#
确保目录树中没有任何其他.htaccess文件与站点的. htaccess冲突。
2wnc66cl5#
我在我的
.htaccess
文件中使用它基本上,如果它不存在为一个文件或目录,使用rewrite.php,并让它负责URL解析等。我相信这是你可以重写的最基本的方法。
此外,检查
var_dump($_SERVER)
的结果(你知道的某个地方可以工作),看看你认为最上面的目录是否真的是最上面的目录,例如:您可能正在写入/var/www/domain/www/index.php
而不是/var/www/domain/index.php
d4so4syb6#
根据经验,我建议您调整URI方案,使其更容易仅将规则应用于您知道重写的URI。举个例子
转换这个:
我把“东西”这个词放进去了,但这真的应该是描述你可能会发现的东西的东西,iidoe。“商店”或“图书馆”或任何此内容):
要实现这一点,您需要在网站的顶层文件夹中放置一个.htaccess文件,其中包含以下规则:
通过地址的“stuff”部分(重命名为适当的内容),您将不会意外地重写其他资产,如图像,CSS包含和JavaScript包含。
pod7payv7#
要获得此URL:
改写为:
我会这样做:
你必须选择是否要将标题放在id之后,并且一直这样做,因为tab变量位于最后一个位置:你必须知道它会是第三个还是第四个。如果您这样做:
第三个括号没有被捕获,因此可以包含任何内容。