带有.htaccess的PHP友好URL


PHP friendly URL with .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 answer工作得很好,这个问题与CSS有关,在我使用.htaccess的情况下,我已经更改了CSS的路径,它工作得很不错。

这是另一个同样有效的代码。

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

只是你在问题末尾提到的尝试的一个简短提示:

该模式CCD_ 1肯定不会与主题CCD_。看看图案中的斜线。相反,你应该尝试类似^/?work/([0-9]+)$或类似的东西:

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

更一般的一点是,我经常指出这一点,因为令人惊讶的是,许多开发人员似乎根本没有意识到这个问题:只有在必要的情况下,才应该使用.htaccess样式的文件。将这样的重写规则放在http服务器的实际主机配置中通常是更好的选择。众所周知,.htaccess风格的文件容易出错,很难调试,确实降低了服务器的速度,通常是徒劳的。它们仅作为而不是控制主机配置的人的最后一个选项提供,例如,当使用廉价的主机提供商时。