我有一个看起来像这样的链接:
https://www.example.com/news/foobar.php?id=14&artName=Hello-World
我希望它看起来像这样:
https://www.example.com/news/foobar/14/Hello-World
这是我目前在.htaccess代码中所拥有的:
<IfModule mod_speling.c>
CheckSpelling off
CheckCaseOnly off
</IfModule>
Options -MultiViews
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^(news/foobar)/([\w-]+)/(.+) $1.php?id=$2&artName=$3 [QSA,L,NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !\.php$ %{REQUEST_URI}.php [QSA,L]
文章的链接如下所示:
<a href = "https://www.example.com/news/foobar/'.$row['id'].'/'.$row['linkAddress'].'">Article</a>
从数据库哪里:
$row['id'] = 14 and $row['linkAddress'] = Hello-World
当我去:
https://www.redicate.com/news/foobar/14/Hello-World
我收到404错误-未找到
如果我改为:
https://www.redicate.com/news/foobar.PHP/14/Hello-World
该网站已加载,但缺少get变量,因此该网站看起来很破损。
我不知道是什么原因导致此404错误,并且我一直在解决此问题已有一段时间,我将不胜感激,谢谢。
不完全是您的,但是这里有一个对我有用的精简版。
<FilesMatch "^\.htaccess">
Order allow,deny
Deny from all
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)/(.*)$ news.php?id=$1&artName=$2 [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]
另外,请确保SSL已启用,设置并正常运行。希望能帮助到你!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句