Php .htaccess可使用漂亮的url访问搜索事件
我想要一个.htaccess文件的代码,输入该文件时: domain.com/event/granniesteaparty文件夹“event”(display.php)中的文件采用“granniesteaparty”位,就好像输入了domain.com/event/display.php?search=granniesteaparty一样 如果我尝试过各种各样的事情,但我现在就是这样:Php .htaccess可使用漂亮的url访问搜索事件,php,.htaccess,search,Php,.htaccess,Search,我想要一个.htaccess文件的代码,输入该文件时: domain.com/event/granniesteaparty文件夹“event”(display.php)中的文件采用“granniesteaparty”位,就好像输入了domain.com/event/display.php?search=granniesteaparty一样 如果我尝试过各种各样的事情,但我现在就是这样: RewriteEngine on RewriteRule ^event/([A-Za-z0-9]+)/([0
RewriteEngine on
RewriteRule ^event/([A-Za-z0-9]+)/([0-9]+)/?$ /event/display.php?search=$1 [NC,L]
RewriteCond %{QUERY_STRING} s=([^&]+)
RewriteRule ^event /event/1? [NC,R=301]
我希望这是有道理的,有人能给我指出正确的方向吗?您的第一条规则中的捕获组太多了。试试这个
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{THE_REQUEST} ^GET\ /+event/display\.php\?search=([^&\s]+)
RewriteRule ^ /event/%1? [R=301,L]
RewriteRule ^event/(\w+)/?$ /event/display.php?search=$1 [NC,L]
第一条规则中的捕获组太多。试试这个
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{THE_REQUEST} ^GET\ /+event/display\.php\?search=([^&\s]+)
RewriteRule ^ /event/%1? [R=301,L]
RewriteRule ^event/(\w+)/?$ /event/display.php?search=$1 [NC,L]
将以下代码
.htaccess
放入事件目录中:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} !\s/+event/display.php?search= [NC]
RewriteRule ^(.*)$ event/display.php?search=$1 [R=302,L,NE]
RewriteRule ^event/display.php?search=$1(.*)$ /$1 [L,NC]
更新
如果您只想将任何错误页面重定向到显示页面,但要在内部重定向,则以下代码将执行此操作:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) event/display.php [L,NC]
因此,当有人请求
/event/whateverwrong
时,它将位于url
处,但内部将映射到display.php
将以下代码.htaccess
放入事件目录中:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} !\s/+event/display.php?search= [NC]
RewriteRule ^(.*)$ event/display.php?search=$1 [R=302,L,NE]
RewriteRule ^event/display.php?search=$1(.*)$ /$1 [L,NC]
更新
如果您只想将任何错误页面重定向到显示页面,但要在内部重定向,则以下代码将执行此操作:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) event/display.php [L,NC]
因此,当有人请求
/event/whateverwrong
时,它将位于url
的原处,但内部将映射到display.php
感谢您的关注。我已将您的代码粘贴到htaccess文件中,页面上显示“未找到”。我使用domain.com/event/granniesteaparty来测试它。如果我输入domain.com/event/display.php,它确实会找到该文件,我不知道这是否有帮助?您是否启用了mod_rewrite或.htaccess文件?将一些随机文本放在.htaccess文件的顶部,如果它导致错误,则apache正在读取.htaccess文件。如果什么也没有发生,则apache正在读取.htaccess文件,您需要启用htaccess使用。我将Blah Blah放在顶部,它导致服务器错误,因此它必须正常工作。我已将htaccess文件放在事件文件夹中。这会改变什么吗?它的位置很重要。将此.htaccess文件放在您网站的根目录中。感谢您查看此文件。我已将您的代码粘贴到htaccess文件中,页面上显示“未找到”。我使用domain.com/event/granniesteaparty来测试它。如果我输入domain.com/event/display.php,它确实会找到该文件,我不知道这是否有帮助?您是否启用了mod_rewrite或.htaccess文件?将一些随机文本放在.htaccess文件的顶部,如果它导致错误,则apache正在读取.htaccess文件。如果什么也没有发生,则apache正在读取.htaccess文件,您需要启用htaccess使用。我将Blah Blah放在顶部,它导致服务器错误,因此它必须正常工作。我已将htaccess文件放在事件文件夹中。这会改变什么吗?它的位置很重要。把这个.htaccess文件放在你网站的根目录下。谢谢你,穆罕默德。显示时没有错误,页面显示的是正确的输出。有没有一种方法可以让URL不再显示domain.com/event/display.php?search=granniesteaparty,而是继续显示domain.com/event/granniesteaparty?还是我没抓住重点?很高兴能帮上忙,重新评价你的问题,看看更新。我想我需要两者的结合。您的第一次尝试是最接近的,我仍然需要将变量传递到display.php页面,但希望url保持不变(有点像隐形的-domain.com/event/granniesteaparty)。因此GrannieSeatParty位被传递到搜索变量domain.com/event/display.php?search=grannieSeatParty)中的页面,再次感谢您。显示时没有错误,页面显示的是正确的输出。有没有一种方法可以让URL不再显示domain.com/event/display.php?search=granniesteaparty,而是继续显示domain.com/event/granniesteaparty?还是我没抓住重点?很高兴能帮上忙,重新评价你的问题,看看更新。我想我需要两者的结合。您的第一次尝试是最接近的,我仍然需要将变量传递到display.php页面,但希望url保持不变(有点像隐形的-domain.com/event/granniesteaparty)。因此GrannieSeatParty位被传递到搜索变量domain.com/event/display.php?search=GrannieSeatParty)中的页面,再次感谢。