我的网页看起来像这样:
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
答案 0 :(得分:2)
您在问题结尾处提及的尝试只是一个简短的提示:
该模式work/(.*)/
肯定与主题work/1
不匹配。看看模式中的尾部斜线。相反,你应该尝试像^/?work/([0-9]+)$
或类似的东西:
RewriteEngine on
RewriteRule ^/?work/([0-9]+)$ work-view.php?id=$1 [L]
更一般地说,我经常指出这一点,因为很多开发人员似乎根本不了解这个问题:如果你真的需要,你应该只使用.htaccess
样式文件。它通常是在http服务器的真实主机配置中放置此类重写规则的更好的替代方法。 .htaccess
样式文件非常容易出错,难以调试,而真的会降低服务器的速度,通常一无所获。它们仅作为不控制主机配置的人的最后选项提供,例如在使用廉价的托管服务提供商时。