Php 创建一个漂亮的URL

Php 创建一个漂亮的URL,php,mysql,.htaccess,Php,Mysql,.htaccess,这几乎与我的想法相似,但似乎对我不起作用 这是我的网址: http://localhost/pr/ajax/ajax_load.php?task=get_blob&blid=199 如何将其转换为: http://localhost/pr/ajax/get_blob/199 这是我的.htaccess: RewriteEngine On RewriteBase /pr/ajax/ RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+pr/ajax/aja

这几乎与我的想法相似,但似乎对我不起作用

这是我的网址:

http://localhost/pr/ajax/ajax_load.php?task=get_blob&blid=199
如何将其转换为:

http://localhost/pr/ajax/get_blob/199
这是我的.htaccess

RewriteEngine On
RewriteBase /pr/ajax/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+pr/ajax/ajax_load\.php\?task=([&\s]+)&blid=([0-9]+) [NC]
RewriteRule ^/%1/%2? [R=301,L,NE]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)/?$ /pr/ajax/ajax_load.php?task=$1&blid=$2 [L,NC,QSA,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(js|css|jpeg|gif|png|pdf)$ /pr/ajax/%{REQUEST_URI} [NC,L,R=302]
.htaccess应该放在哪里?我是说,你把它放在哪里重要吗?我的根目录位于
pr

请尝试以下操作:

RewriteEngine On
RewriteRule ^/pr/ajax/(.*)/(.*)$ /pr/ajax/ajax_load.php?task=$1&blid=$2 [NC,L]

是的,把htaccess文件放在哪里很重要。您将该文件放在要修改/操作其路径的文件目录中。

该.htaccess文件的位置非常重要,特别是对于重写规则中测试的URI路径,该路径仅包含文件所在目录后的路径段。为了克服这个限制,下面的代码中只使用REQUEST_URI变量

下面是一个经过测试的解决方案,它可以在
/pr
/pr/ajax/
目录下使用.htaccess文件:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /pr/ajax/ajax_load\.php\?task=([^&]+)&blid=([^&\s]+) [NC]
RewriteRule .*             /pr/ajax/%1/%2? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !ajax_load\.php [NC]
RewriteCond %{REQUEST_URI} ^/pr/ajax/([^/]+)/([^/]+)/? [NC]
RewriteRule .*  /pr/ajax/ajax_load.php?task=%1&blid=%2 [L,NC]

这太神奇了。我想我需要重新编程HTTP GET。但是,对于所有GET方法来说,它似乎都能自动正常工作。谢谢