2013-05-30 50 views
2

它几乎和how to create pretty urls类似,但它似乎并不适合我。创建一个漂亮的URL

这里是我的网址:

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

回答

1

试试这个:

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

是的,它在那里你把htaccess文件事一样。将文件放在要修改/操作其路径的文件的目录中。

4

.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] 
+0

这是惊人的。我以为我需要重新编程HTTP GET。但是,它似乎自动适用于所有GET方法。谢谢! –