简体   繁体   中英

Local Apache Server mod_rewrite/pretty links issue

I've had to move from testing on the live server, to testing locally on a virtual apache server. I've installed XAMPP just fine, downloaded and installed the wordpress files and the database. Everything looks great! The local version of my homepage is identical to the live version. There's only one problem: the homepage is the only page that works. When I click on one of the links ie the "about" page (http://localhost/wordpress/about/), I am redirected to the xampp control panel (http://localhost/xampp).

I have a good feeling this has to do with a problem with the "pretty links"/mod_rewrite rules. I made sure I brought over the .htaccess file, and it contains the rewrite instructions. The wordpress database has the proper permalink structure, and the httpd.conf file has the "RewriteEngine on" and the "FollowSymLinks" directives enabled. There has got to be some sort of rewrite problem here, although I am not ruling out something else stupid I might have done. Thanks for all your help!

-E

*Here is what the .htaccess looks like:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

In the httpd.conf, change the

DocumentRoot "/path/to/your/app/wordpress"

also

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/path/to/your/app/wordpress">

This should work, the path is absolute.

The problem is that wordpress does not believe in relative paths for some reason. There is an assumption that wordpress is running from the server root not a directory under the root (eg /var/www/wordpress will not work, but /var/www/ will).

The problem is with the .htaccess file they provide. It should re-write it to index.php and not /index.php . Change that line in your config and it will work.

What happens is that it tries to actually go to the default document root (in my case /var/www/index.php, which does not exist since I am using http://localhost/worpress which is an alias for ~/projects/worpress ). You can check your error log and it will tell you where it is trying to look for the index.php file (which will return a 404 error).

I can go on a rant about how stupid it is that they do that and how bad the whole software design of wordpress is. But I will spare you that :).

And do you have load the:

LoadModule rewrite_module modules/mod_rewrite.so

in httpd.conf??

If your server version works with a domain name, ie: http://domainname.com is equivalent that http://localhost/wordpress the rewrite rules will be differents. post the rules here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM