.htaccess友好URL的GET参数不起作用

6vl6ewon  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(122)

我希望使我的网址的搜索引擎优化更友好,但我真的有一个很难弄清楚是什么问题,因为我一直试图重写这个网址3天了。没有代码似乎不工作。
我有三个URL:

https://website.net/jobs/country.php?country=switzerland
https://website.net/jobs/state.php?country=switzerland&state=bern
https://website.net/jobs/state.php?country=switzerland&state=bern&city=17462

我想得到这些:

/jobs/switzerland 
/jobs/switzerland/bern/
/jobs/switzerland/bern/17462/

我似乎不明白问题出在哪里。这是我的第一个链接的代码,它显然没有做任何事情:

RewriteEngine on
RewriteRule ^jobs/country/([0-9]*)/?$ /jobs/country.php?country=$1 [L, QSA]

此外,这是一个论坛的一部分,所以有现有的重写,但我真的不知道如果他们影响任何东西,因为即使在一个新的htaccess我无法使它工作:

# Some hosts require RewriteBase to make RewriteRules work.
RewriteBase /

# Google SEO workaround for search.php highlights:
# Make this rule the first rewrite rule in your .htaccess!
RewriteRule ^([^&]*)&(.*)$ https://website.net/$1?$2 [L,QSA,R=301]

Options -MultiViews +FollowSymlinks -Indexes

#
# If mod_security is enabled, attempt to disable it.
# - Note, this will work on the majority of hosts but on
#   MediaTemple, it is known to cause random Internal Server
#   errors. For MediaTemple, please remove the block below
#
<IfModule mod_security.c>
    # Turn off mod_security filtering.
    SecFilterEngine Off

    # The below probably isn't needed, but better safe than sorry.
    SecFilterScanPOST Off
</IfModule>

#
# MyBB "search engine friendly" URL rewrites
# - Note, for these to work with MyBB please make sure you have
#   the setting enabled in the Admin CP and you have this file
#   named .htaccess
#
<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteRule ^jobs/country/([0-9]*)/?$    /jobs/country.php?country=$1    [L, QSA]

    RewriteRule ^forum-([0-9]+)\.html$ forumdisplay.php?fid=$1 [L,QSA]
    RewriteRule ^forum-([0-9]+)-page-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2 [L,QSA]

    RewriteRule ^thread-([0-9]+)\.html$ showthread.php?tid=$1 [L,QSA]
    RewriteRule ^thread-([0-9]+)-page-([0-9]+)\.html$ showthread.php?tid=$1&page=$2 [L,QSA]
    RewriteRule ^thread-([0-9]+)-lastpost\.html$ showthread.php?tid=$1&action=lastpost [L,QSA]
    RewriteRule ^thread-([0-9]+)-nextnewest\.html$ showthread.php?tid=$1&action=nextnewest [L,QSA]
    RewriteRule ^thread-([0-9]+)-nextoldest\.html$ showthread.php?tid=$1&action=nextoldest [L,QSA]
    RewriteRule ^thread-([0-9]+)-newpost\.html$ showthread.php?tid=$1&action=newpost [L,QSA]
    RewriteRule ^thread-([0-9]+)-post-([0-9]+)\.html$ showthread.php?tid=$1&pid=$2 [L,QSA]

    RewriteRule ^post-([0-9]+)\.html$ showthread.php?pid=$1 [L,QSA]

    RewriteRule ^announcement-([0-9]+)\.html$ announcements.php?aid=$1 [L,QSA]

    RewriteRule ^user-([0-9]+)\.html$ member.php?action=profile&uid=$1 [L,QSA]

    RewriteRule ^calendar-([0-9]+)\.html$ calendar.php?calendar=$1 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)\.html$ calendar.php?calendar=$1&year=$2&month=$3 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)-day-([0-9]+)\.html$ calendar.php?action=dayview&calendar=$1&year=$2&month=$3&day=$4 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-week-(n?[0-9]+)\.html$ calendar.php?action=weekview&calendar=$1&week=$2 [L,QSA]

    RewriteRule ^event-([0-9]+)\.html$ calendar.php?action=event&eid=$1 [L,QSA]

    <IfModule mod_env.c>
        SetEnv SEO_SUPPORT 1
    </IfModule>
</IfModule>

#
# If Apache is compiled with built in mod_deflade/GZIP support
# then GZIP Javascript, CSS, HTML and XML so they're sent to
# the client faster.
#
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css text/html application/xhtml+xml text/xml application/xml text/plain text/x-component application/javascript application/x-javascript application/rss+xml application/atom+xml application/json application/manifest+json application/x-web-app-manifest+json application/vnd.ms-fontobject application/font-sfnt application/font-woff application/font-woff2 image/svg+xml image/x-icon
</IfModule>

# Note: You are able to choose a different name in the Admin CP. If you've done that you need to change it here too
<Files "error.log">
    Order Deny,Allow
    Deny from all
</Files>


# Some hosts require RewriteBase to make RewriteRules work.
RewriteBase /

# Google SEO workaround for search.php highlights:
# Make this rule the first rewrite rule in your .htaccess!
RewriteRule ^([^&]*)&(.*)$ https://website.net/$1?$2 [L,QSA,R=301]

# Google SEO 404:
ErrorDocument 404 /misc.php?google_seo_error=404

# Google SEO Sitemap:
RewriteRule ^sitemap\-([^./]+)\.xml$ misc.php?google_seo_sitemap=$1 [L,QSA,NC]

# Google SEO URL Forums:
RewriteRule ^Forum\-([^./]+)$ forumdisplay.php?google_seo_forum=$1 [L,QSA,NC]

# Google SEO URL Threads:
RewriteRule ^Thread\-([^./]+)$ showthread.php?google_seo_thread=$1 [L,QSA,NC]

# Google SEO URL Announcements:
RewriteRule ^Announcement\-([^./]+)$ announcements.php?google_seo_announcement=$1 [L,QSA,NC]

# Google SEO URL Users:
RewriteRule ^User\-([^./]+)$ member.php?action=profile&google_seo_user=$1 [L,QSA,NC]

# Google SEO URL Calendars:
RewriteRule ^Calendar\-([^./]+)$ calendar.php?google_seo_calendar=$1 [L,QSA,NC]

# Google SEO URL Events:
RewriteRule ^Event\-([^./]+)$ calendar.php?action=event&google_seo_event=$1 [L,QSA,NC]

谢谢

ndh0cuux

ndh0cuux1#

我得到了chatGPT来回答它。对于寻找解决方案的人,你可以尝试使用我的,或者我猜只是问chatGPT。

# Redirect /jobs/state.php?country=...&state=...&city=... to /jobs/.../.../...
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/jobs/state\.php\?country=([^&]+)&state=([^\s&]+)&city=([^\s&]+) [NC]
RewriteRule ^jobs/state\.php$ /jobs/%1/%2/%3? [R=301,L,NE]

# Redirect /jobs/state.php?country=...&state=... to /jobs/.../...
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/jobs/state\.php\?country=([^&]+)&state=([^\s&]+) [NC]
RewriteRule ^jobs/state\.php$ /jobs/%1/%2? [R=301,L,NE]

# Redirect /jobs/country.php?country=... to /jobs/...
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/jobs/country\.php\?country=([^\s&]+) [NC]
RewriteRule ^jobs/country\.php$ /jobs/%1? [R=301,L]

# Rewrite /jobs/.../.../... to /jobs/state.php?country=...&state=...&city=...
RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([a-zA-Z0-9%_-]+)/([a-zA-Z0-9%_-]+)$ /jobs/state.php?country=$1&state=$2&city=$3 [QSA,L,B,NE]

# Rewrite /jobs/.../... to /jobs/state.php?country=...&state=...
RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([a-zA-Z0-9%_-]+)$ /jobs/state.php?country=$1&state=$2 [QSA,L,B,NE]

# Rewrite /jobs/... to /jobs/country.php?country=...
RewriteRule ^jobs/([a-zA-Z0-9_-]+)$ /jobs/country.php?country=$1 [QSA,L]

相关问题