我正在尝试为我的网站创建一个漂亮的URL。
我有这样一种URL:game.php?game=some-game
,并且我想显示为:game/some-game
。我已经尝试在htaccess中编写和重写规则,但没有成功。
首先,我认为htaccess文件无法正常运行,但是我输入的自定义错误页面正常运行。我尝试使用QSA
标志,但没有结果。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?game/(.*?)/?$ /game.php?game=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /game\.php\?game=([^\&\ ]+)
RewriteRule ^/?game\.php$ /game/%1? [L,R=301]
ErrorDocument 400 /Hacknet-INC/400.php
ErrorDocument 401 /Hacknet-INC/401.php
ErrorDocument 403 /Hacknet-INC/403.php
ErrorDocument 404 /Hacknet-INC/404.php
ErrorDocument 410 /Hacknet-INC/410.php
ErrorDocument 500 /Hacknet-INC/500.php
#Serve .htc files correctly, for IE fixes
AddType text/x-component .htc
php_value upload_max_filesize 300M
php_value post_max_size 10M
php_value max_execution_time 200
php_value max_input_time 200
答案 0 :(得分:1)
恐怕您正在以错误的方式进行操作,但壮举并非如此!实际上,这是人们在首次使用Apache的重写规则时会遇到的常见问题。
因此,您有了一个脚本-const cluster = require('cluster');
if (cluster.isMaster) {
const fn = cluster.fork();
setTimeout(_=>fn.process.kill(), 300);
} else {
for(;;) {
process.stdout.write('#');
}
}
-该脚本将游戏名称作为通过查询字符串参数game.php
的输入,因此game
。
现在,您想通过以game.php?game=some-game
的形式屏蔽网址,使网址看起来更好。
问题是您正在尝试通过将原始脚本URL重定向到漂亮的URL来做到这一点,而这几乎是任何人首先做这种事情的目的。
关键是您要屏蔽 URL。也就是说,您想将原始的丑陋网址打扮成更好的东西。
这是行不通的,因为您不是用好看的方式掩盖丑陋,而是用另一种方式来做-您是在用丑闻来掩盖美好。
也就是说,如果您输入难看的网址,它会重定向到漂亮的网址,但是问题在于该位置不存在任何资源,因此无法正常工作。
您需要做的是-用漂亮的URL遮盖丑陋的URL,以便当您在地址栏中键入漂亮的URL时,服务器知道该发送并将请求发送到丑陋的URL并提供结果响应在漂亮的网址下。
然后您需要去更新系统中的链接以使用漂亮的URL,就是这样。
实现这一目标的规则很简单:
game/some-game
在此处查看示例:https://htaccess.madewithlove.be?share=f6863821-b64c-5873-9bd4-9f13b6e4736e