.htaccess Link 重写 returns 一个 404 错误
.htaccess Link rewrite returns a 404 error
我有一个 link 看起来像这样:
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-]+)/(.+) .php?id=&artName= [QSA,L,NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !\.php$ %{REQUEST_URI}.php [QSA,L]
文章的 link 看起来像这样:
<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
网站已加载但缺少获取变量,因此网站看起来已损坏。
我不知道是什么导致了这个 404 错误,我已经研究这个问题一段时间了,如果能得到任何帮助,我将不胜感激,谢谢。
不完全是你的,但这是一个适合我的精简版本。
<FilesMatch "^\.htaccess">
Order allow,deny
Deny from all
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)/(.*)$ news.php?id=&artName= [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) .php [L]
还要确保 SSL 已启用、设置并正常工作。希望对您有所帮助!
我有一个 link 看起来像这样:
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-]+)/(.+) .php?id=&artName= [QSA,L,NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !\.php$ %{REQUEST_URI}.php [QSA,L]
文章的 link 看起来像这样:
<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
网站已加载但缺少获取变量,因此网站看起来已损坏。
我不知道是什么导致了这个 404 错误,我已经研究这个问题一段时间了,如果能得到任何帮助,我将不胜感激,谢谢。
不完全是你的,但这是一个适合我的精简版本。
<FilesMatch "^\.htaccess">
Order allow,deny
Deny from all
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)/(.*)$ news.php?id=&artName= [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) .php [L]
还要确保 SSL 已启用、设置并正常工作。希望对您有所帮助!