PHP友好的URL与.htaccess

时间:2016-04-19 20:29:35

标签: php .htaccess

我的网页看起来像这样:

www.mywebsite.com/work-view?id=1

www.mywebsite.com/work-view?id=2

www.mywebsite.com/work-view?id=3

依旧......

如何使用.htaccess设置它们?

www.mywebsite.com/work/1

www.mywebsite.com/work/2

www.mywebsite.com/work/3

我已经尝试过这样,但它不起作用。

RewriteRule work/(.*)/ work-view.php?id=$1

编辑:

这是我尝试的新代码。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^/?work/([0-9]+)$ work-view.php?id=$1 [L]

当我检查页面/工作视图?id = 2时它显示正常,但是当我尝试输入/ work / 2时它显示500内部服务器错误。 不幸的是,在cPanel日志中,我没有看到与此问题相关的任何错误,可能是因为某些托管限制。

新编辑:

arkascha的答案效果很好,问题与CSS有关,在我的情况下,当我使用.htaccess时,我已经改变了CSS的路径并且它的工作效果很好。

这是另一个效果很好的代码。

RewriteRule   ^work/([0-9]+)/?$  work-view?id=$1    [NC,L]    # Handle product requests  

1 个答案:

答案 0 :(得分:2)

您在问题结尾处提及的尝试只是一个简短的提示:

该模式work/(.*)/肯定与主题work/1不匹配。看看模式中的尾部斜线。相反,你应该尝试像^/?work/([0-9]+)$或类似的东西:

RewriteEngine on
RewriteRule ^/?work/([0-9]+)$ work-view.php?id=$1 [L]

更一般地说,我经常指出这一点,因为很多开发人员似乎根本不了解这个问题:如果你真的需要,你应该只使用.htaccess样式文件。它通常是在http服务器的真实主机配置中放置此类重写规则的更好的替代方法。 .htaccess样式文件非常容易出错,难以调试,而真的会降低服务器的速度,通常一无所获。它们仅作为控制主机配置的人的最后选项提供,例如在使用廉价的托管服务提供商时。