我正在尝试使用htaccess重写网址,我尝试了另外一个问题的答案,但似乎没有任何工作,我仍然得到原始网址。 这就是我所拥有的:
http://localhost/inbox.php?pg=2
我想要
http://localhost/inbox/2
我已经有了一条规则,可以删除.htaccess中的.php扩展名,如下所示,只是添加了最后一行
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
RewriteRule /(.*)$ /inbox.php?pg=$1//added this
答案 0 :(得分:0)
您的问题是最后一行之前的行被定义为最后一行,因此您的规则必须高于RewriteConditions。更好地使用此规则集:
RewriteRule ^/?inbox/(\d+)$ /inbox.php?pg=$1 [QSD,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
我添加了你错过的你需要的前缀,并且在这些数字跟随之后(至少有一个)进行了修改。
答案 1 :(得分:0)
Apache重写引擎主要用于将动态网址(例如 http://localhost/inbox.php?pg=2
)转换为静态且用户友好的网址 http://localhost/inbox/2
RewriteEngine on
RewriteRule ^inbox/([^/.]+)/?$ /inbox.php?pg=$1 [L]
号召性用语: RewriteRule
模式: ^ inbox /([^/.]+)/?$
重写: /inbox.php?pg=$1
命令标志: [L]
答案 2 :(得分:0)
简单地说,
RewriteEngine on
RewriteRule ^inbox/([0-9]+)/?$ inbox.php?pg=$1