Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess可使用漂亮的url访问搜索事件_Php_.htaccess_Search - Fatal编程技术网

Php .htaccess可使用漂亮的url访问搜索事件

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

我想要一个.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-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)中的页面,再次感谢。