dongli7236 2019-01-25 18:30
浏览 32

如何在htaccess中设置重写

I have this htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteRule cache/ - [F]
Options -Indexes

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1


# Blokada hotlinking czyli kradzieży obrazków
RewriteCond %{HTTP_REFERER} !^https://(.+\.)?nazwadomeny.pl/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]




# Prevent viewing of htaccess file.
<Files .htaccess>
    order allow,deny
    deny from all
</Files>
RedirectMatch 403 ^.*/apps/(.*).php(.*)$

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl|map)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

in php I have this (my router):

$explodeUrl = explode('/', $url);
$request->controller = ucfirst($explodeUrl[0]);
$request->action = $explodeUrl[1] ?? 'index';
$request->params = $explodeUrl[2] ?? [];

When I have this url - all is ok:

- www.domain.com\sample
- www.domain.com\contact
- www.domain.com\option\value
- www.domain.com\url\id
- www.domain.com\product
ame\id

Problem is when I have this url:

- www.domain.com\product?id=1
- www.domain.com\viewCity?build=123

then I have result: viewCity?build=123 or product?id=1.

The thing, the problem is in this line: RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1

In result I need only: viewCity or product - without ?....

How repair it?

  • 写回答

0条回答 默认 最新

    报告相同问题?